1

如果我不对套接字执行任何操作,您知道如何使套接字连接保持活动状态吗?我刚刚注意到,如果我的连接在后台并且我不操作它,我会得到:

java.net.SocketException: Connection reset by peer: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(Unknown Source)
    at java.net.SocketOutputStream.write(Unknown Source)
    at java.io.DataOutputStream.writeInt(Unknown Source)

那么,我怎样才能控制连接在空闲时间后不会丢失,默认情况下会在多长时间后发生呢?

4

2 回答 2

2

这个问题没有通用的解决方案。远程服务器/服务很可能已决定重置/关闭 TCP/IP 连接。它如何以及为什么决定是特定于应用程序的。需要一个特定于应用程序的解决方案来防止它。

FWIW,SO_KEEP_ALIVE 机制导致协议栈偶尔在空闲的 TCP/IP 连接上交换消息。如果您因端口重用而在 NAT 连接上遇到重置,这可能会有所帮助。相关的 Java 方法是Socket.setKeepAlive.

于 2011-10-28T11:57:12.353 回答
1

对等方重置连接:套接字写入错误

这通常是由于写入已被对等方关闭的连接造成的。这是一个应用程序协议错误。在担心连接生命周期之前,您应该先进行调查。

于 2011-10-29T01:08:02.767 回答