首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

为何服务端调用SocketChannel.close之后TCP连接仍然存在

2011-11-19 
为什么服务端调用SocketChannel.close之后TCP连接仍然存在?如题。用nio的时候,当服务端调用SocketChannel.c

为什么服务端调用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的,你找找吧。

热点排行