通过对等方重置连接:套接字写入错误 - 中间人

时间:2017-03-29 10:21:28

标签: java sockets

我遇到了着名的“通过对等连接重置:套接字写入错误”问题。这是它的一种口味。

我有两个(java)软件 - 客户端和服务器,两者都完美无缺,几个世纪以来一直运行良好。服务器在公共互联网上。最近(在家里)我开始在客户端获得连接丢失。

客户端在尝试向服务器发送内容时捕获重置。当客户端在我的家庭网络上运行并且发送周期超过60秒的请求时,会发生特别

客户端代码,如果相当基本:

socket = new Socket(address, port);
socket.setKeepAlive(true);
OutputStream os = socket.getOutputStream();

每隔一段时间就会这样做:

os.write(bytes)

我使用Wireshark来实现连接被“某人”强行删除,当客户端尝试写入时,它会获得异常,处理它,重新连接,并且当下一个请求超过60秒后再次连接时,“某人“再次放弃连接。现在,我不想进行特殊的ping操作来保持连接。我100%确定服务器没有丢弃任何东西,所以它与空闲连接有关。

我的客户端现在在Windows 10上,所以我继续将注册表 KeepAliveTime 值修改为小于60秒。这确实有影响,客户现在很酷。但改变全球KeepAliveTime并不是一个谨慎的解决方案。

我想明白 - 这个“有人”在60秒后强行放下好的插座连接是谁?我怎么能告诉“他”停止这样做,或者不那么频繁地做。

(我的环境是NETGEAR路由器后面的一个典型的Windows框。它以前工作没有问题,我想最近一些操作系统更新开始引起这种情况。)

0 个答案:

没有答案