This question already has answers here:
Official reasons for “Software caused connection abort: socket write error”

(14个回答)


1年前关闭。




我正在通过TCP创建一个Java客户端/服务器应用程序,其中有两个套接字:
  • 一个用于交换消息。
  • 两个用于文件传输。

  • 我在服务器中创建了两个ServerSockets以创建套接字一和二
    通过接受ServerSockets。

    首先,客户端通过第一个套接字发送一些字节
    这样它可以告诉服务器它需要哪个文件。

    然后,服务器通过第二个套接字将文件发送给客户端。
    客户端收到文件后,尝试将“传输完成”消息发送回服务器。
    在那里,我得到了封闭 socket 的异常。
    但是直到现在我才关闭 socket 。
    我只关闭发送文件的缓冲区。
    即使我在发送文件后尝试再次打开socketInputStream,错误仍然相同。
    另外,如果我不关闭发送文件的缓冲区,则客户端也不会获取文件。

    服务器异常



    客户端异常



    我究竟做错了什么?

    最佳答案

    “关闭套接字”异常意味着捕获到该异常的应用程序关闭了该套接字,然后继续尝试使用它。您可能没有意识到关闭套接字的输入或输出流会同时关闭另一个流和套接字。对于“软件导致的连接中止”,请参阅重复的链接。

    10-07 22:27