是否可以在客户端和服务器端关闭Java套接字?

我在两个java应用程序之间有一个套接字tcp连接.当一侧关闭插座时,另一侧保持打开状态.但我希望它能够关闭.我也迫不及待地想看看它是否可用,然后关闭它.我想从某一方面完全关闭它.
我能做什么?
最佳答案
TCP不能像这样工作.操作系统不会释放资源,即文件描述符,从而释放端口,直到应用程序显式关闭套接字或死亡,即使TCP堆栈知道另一方关闭它.在从对等方接收FIN时,没有从内核到用户应用程序的回调.操作系统向另一方确认,但等待应用程序在发送其FIN数据包之前调用close().看看TCP state transition diagram – 你处于被动关闭盒子里.

在没有为每个套接字专用线程的情况下检测这种情况的一种方法是使用select / poll / epoll / kqueue函数系列.被动关闭的套接字将被发信号通知可读和读取尝试将返回EOF.

希望这可以帮助.

转载注明原文:是否可以在客户端和服务器端关闭Java套接字? - 代码日志