sockets Java NIO SocketChannel IOException:断管
斯蒂芬·C的答案here很好地描述了这个问题。他说,管道破裂异常是由导致连接关闭的原因造成的,而不是应用程序。我想知道这些“东西”通常是什么导致连接关闭的?处理这些问题的可能方法是什么
我的使用环境: 我在Azure上的一组机器上运行我的应用程序,所有这些机器都在与其中一台机器对话。我几乎总是会犯这样的错误
TCP超时可能是原因之一吗?如果是,那么如何使socket通道(在它们后面运行的影响socket中)由于TCP超时而从不关闭
# 1 楼答案
您可以获取与SocketCannel关联的套接字,然后设置其keepAlive属性。像这样的
# 2 楼答案
每当客户端离开正在侦听的套接字时,就会出现断管异常。这可能是由于服务器响应缓慢,客户端达到套接字超时。比如,在浏览器的情况下,如果任何http请求需要很长时间才能响应,并且用户关闭了浏览器,那么应用程序日志中将显示一个断管异常
现在要解决这个问题,要么增加套接字超时,要么修复服务器响应