Java套接字第二次写入尝试失败
我有一个功能:Java套接字第二次写入尝试失败,java,sockets,Java,Sockets,我有一个功能: ... socket.getOutputStream().write("something".getBytes()); socket.getOutputStream().flush(); ... 很好。保持插座打开。 试图再次调用此函数,但出现错误:java.net.SocketException:breaked pipe 尽管事实上 socket.isClosed-假 socket.isOutputShutdown-错误 socket.isConnected-正确很可能另一端
...
socket.getOutputStream().write("something".getBytes());
socket.getOutputStream().flush();
...
很好。保持插座打开。
试图再次调用此函数,但出现错误:java.net.SocketException:breaked pipe
尽管事实上
socket.isClosed-假socket.isOutputShutdown-错误
socket.isConnected-正确很可能另一端已关闭连接。第一次写入也可能失败,因为write()不能保证交付。只有当它知道另一端没有监听时,才会出现异常
isClosed
表示:;我关了吗
isOutputShutdown
表示:;我是否关闭了输出
断开连接
表示:;它有联系吗
检测连接是否真正启动的唯一方法是从另一端获得响应,告诉您它已收到您的数据。e、 g.对心跳的反应。如果没有该响应(必须是协议的一部分),则无法确定另一端是否已收到该响应。另一端很可能已关闭连接。第一次写入也可能失败,因为write()不能保证交付。只有当它知道另一端没有监听时,才会出现异常
isClosed
表示:;我关了吗
isOutputShutdown
表示:;我是否关闭了输出
断开连接
表示:;它有联系吗
检测连接是否真正启动的唯一方法是从另一端获得响应,告诉您它已收到您的数据。e、 g.对心跳的反应。如果没有该响应(该响应必须是协议的一部分),则无法确定另一端是否已接收到该响应。管道断开意味着您向另一端已关闭的连接写入了数据。这可能表示应用程序协议错误。管道断开表示您将数据写入另一端已关闭的连接。这可能表示应用程序协议错误。只有在写入新数据时才会检测到超时连接。。。在写入之前检查isClosed()不起作用。我无法通过本地套接字和服务器套接字测试重现此操作。在您的特殊情况下,是否可以提供更多信息?只有在写入新数据时才会检测到超时连接。。。在写入之前检查isClosed()不起作用。我无法通过本地套接字和服务器套接字测试重现此操作。在您的特殊情况下,您能提供更多信息吗?