我正在使用(Java)TCP套接字连接到启用网络的设备。
考虑以下场景:
1) TCP套接字连接成功创建
2) 网络连接短时间中断(我只是通过拔下网络电缆来测试)
3) 我的程序关闭了套接字。
4) 套接字的另一侧只响应来自我一侧的请求;因此,连接另一端的套接字不一定检测到断开的连接
5) 网络连接已重新建立
6) 我的程序尝试再次打开套接字
7) ->获取SocketException: connection refused
为什么
因为另一端的套接字认为tcp连接仍然打开,因此拒绝了同一端口的任何其他连接请求。
接下来会发生什么
大约5分钟后,我的程序能够再次打开套接字,因为另一端检测到连接不再处于活动状态。
问题:
有什么办法可以缩短我重新连接的时间吗?我无法在"其他"站点上进行任何更改,即,我无法更改启用网络的设备的tcp连接处理。
如果不能更改TCP连接在另一端的处理方式,那么在这种情况下,您将无能为力。这是Java套接字的常见问题。