java.net.SocketException:socket关闭TCP客户端服务器通信

lem*_*nou 4 java sockets tcp client-server socketexception

我正在TCP上创建一个java客户端/服务器应用程序,我们有两个套接字:

  • 一个是交换消息.
  • 二是文件传输.

我在Server中创建了两个ServerSockets,以便
通过接受ServerSockets 来创建Socket One和Two .

首先,客户端通过第一个Socket发送一些字节,
以便它可以告诉服务器它需要哪个文件.

然后服务器通过第二个套接字将文件发送到客户端.
客户端收到文件后,尝试向服务器发送一个Transfer Done Message.

在那里,我得到了关闭套接字的异常.
但是我直到现在才关闭套接字.
我只关闭发送文件的缓冲区.
即使我在发送文件后尝试再次打开socketInputStream,错误仍然是相同的.
此外,如果我不关闭发送文件的缓冲区,客户端将不会获取该文件.

服务器异常

返回消息中的错误 - java.net.SocketException:socket已关闭

客户端例外

服务器响应 - java.net.SocketException:软件导致连接中止:套接字写入错误

我究竟做错了什么?

use*_*421 18

"Socket closed"异常意味着捕获该异常的应用程序关闭了套接字,然后继续尝试使用它.您可能不知道关闭套接字的输入或输出流也会关闭另一个流和套接字.对于"软件导致连接中止",请参阅重复链接.

  • 其实,是.那就是问题所在.我用DataOutputStream替换了缓冲区读取器,在用FileInputStream读取文件之后,我通过DataOutputStream发送了它.我现在只需关闭FileInputStream即可完成"传输".谢谢!:) (3认同)