如果我不对套接字执行任何操作,您知道如何保持套接字连接吗? 我只是注意到,如果我的连接是在后台,而我不操作它,我得到这个:
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)
那么,我怎样才能控制连接在一些空闲时间之后以及默认情况下会花多少时间后才会丢失?
答案 0 :(得分:2)
此问题没有一般解决方案。很可能是已决定重置/关闭TCP / IP连接的远程服务器/服务。它决定的方式和原因是特定于应用程序的。将需要特定于应用程序的解决方案来阻止它。
FWIW,SO_KEEP_ALIVE机制导致协议栈偶尔在空闲的TCP / IP连接上交换消息。如果由于端口重用而遇到NATed连接的重置,这可能会有所帮助。相关的Java方法是Socket.setKeepAlive
。
答案 1 :(得分:1)
通过对等方重置连接:套接字写入错误
这通常是由写入已经被对等方关闭的连接引起的。这是一个应用程序协议错误。在担心连接生命周期之前,您应首先进行调查。