我正在通过TCP创建一个java客户端/服务器应用程序,我们有两个套接字:
我在Server中创建了两个ServerSockets以创建Socket One和Two
通过接受ServerSockets。
首先,客户端通过第一个Socket发送一些字节
这样它可以告诉服务器它需要哪个文件。
然后服务器通过第二个套接字将文件发送给客户端
客户端收到文件后,尝试向服务器发送一个Transfer Done Message。
在那里,我得到了关闭套接字的异常。
但是直到现在我才关闭插座。
我只关闭发送文件的缓冲区。
即使我在发送文件后尝试再次打开socketInputStream,错误仍然是相同的。
另外如果我没有关闭发送文件的缓冲区,客户端也不会获取该文件。
服务器异常
返回消息中的错误 - java.net.SocketException:socket closed
客户端例外
服务器响应 - java.net.SocketException:软件导致连接中止:套接字写入错误
我做错了什么?
答案 0 :(得分:17)
'Socket closed'异常意味着捕获异常的应用程序关闭了套接字,然后继续尝试使用它。您可能不知道关闭套接字的输入或输出流也会关闭另一个流和套接字。对于'软件导致连接中止',请参阅重复链接。