为什么服务端调用SocketChannel.close之后TCP连接仍然存在?
如题。
用nio的时候,当服务端调用SocketChannel.close之后,客户端没有关闭连接的情况下,用防火墙看到TCP连接仍然存在,要客户端再发送数据过滤才会在客户端抛出异常,然后TCP连接才会被清除。
先调用SocketChannel.socket().close() 再调用ScoketChannel.close() 结果也一样。
还有就是调用SocketChannel.close之后SocketChannel.isConnected仍然返回为ture,是否是因为套接字没有关闭的缘故?
请问有没有什么办法可以做到服务端关闭通道之后TCP连接就立即被清除掉?
谢谢
------解决方案--------------------你把新建的Socket线程关闭不就行了吗?
------解决方案--------------------SocketChannel.socket().close();
------解决方案--------------------TCP protocal就是这样,连接的关闭也要握手的。 不过它应该是有个timeout的,你找找吧。