如题。
用nio的时候,当服务端调用SocketChannel.close之后,客户端没有关闭连接的情况下,用防火墙看到TCP连接仍然存在,要客户端再发送数据过滤才会在客户端抛出异常,然后TCP连接才会被清除。
先调用SocketChannel.socket().close() 再调用ScoketChannel.close() 结果也一样。还有就是调用SocketChannel.close之后SocketChannel.isConnected仍然返回为ture,是否是因为套接字没有关闭的缘故?请问有没有什么办法可以做到服务端关闭通道之后TCP连接就立即被清除掉?谢谢
用nio的时候,当服务端调用SocketChannel.close之后,客户端没有关闭连接的情况下,用防火墙看到TCP连接仍然存在,要客户端再发送数据过滤才会在客户端抛出异常,然后TCP连接才会被清除。
先调用SocketChannel.socket().close() 再调用ScoketChannel.close() 结果也一样。还有就是调用SocketChannel.close之后SocketChannel.isConnected仍然返回为ture,是否是因为套接字没有关闭的缘故?请问有没有什么办法可以做到服务端关闭通道之后TCP连接就立即被清除掉?谢谢
支持一个。 IO 异常只有在有数据读写时才会发生,设置一个合适的 setSoTimeout 数值吧!