是否可以在客户端和服务器端都关闭Java套接字?
我在两个Java应用程序之间建立了一个套接字TCP连接。当一侧关闭插槽时,另一侧保持打开状态。但我希望将其关闭。而且我也迫不及待想看看它是否可用,然后关闭它。我想要某种方式从一侧完全关闭它。我能做什么?
-
TCP不能像这样工作。操作系统将不会释放资源,即文件描述符以及端口,直到应用程序显式关闭套接字或死掉,即使TCP堆栈知道另一端已将其关闭。从对等方收到FIN后,从内核到用户应用程序之间没有回调。操作系统向另一侧确认它,但
close()
在发送FIN数据包之前等待应用程序调用。看一下TCP状态转换图 -您处于 被动关闭 框中。在不为每个套接字专用线程的情况下检测这种情况的一种方法是使用
select/poll/epoll/kqueue
函数系列。被动关闭的套接字将被发信号表示为可读,并且尝试读取将返回EOF。希望这可以帮助。
-
Java套接字,客户端和服务器
2021-02-01 关注 0 浏览103 1答案
-
如何使用java套接字实现客户端和服务器之间的文件传输
2021-01-31 关注 0 浏览98 1答案
-
客户端和服务器端编程有什么区别?
2021-11-08 关注 0 浏览221 1答案
-
客户端编程和服务器端编程有什么区别?
2021-02-02 关注 0 浏览158 1答案
-
客户端路由(使用react-router)和服务器端路由
2021-01-31 关注 0 浏览139 1答案
-
Java Socket客户端和服务器
2021-01-29 关注 0 浏览129 1答案
-
AJAX:如何在单击按钮时在客户端和服务器端更改值?
2021-01-31 关注 0 浏览116 1答案
-
JavaScript客户端编程和服务器端编程有什么区别?
2021-02-02 关注 0 浏览128 1答案
-
套接字Java客户端-Python服务器
2021-01-29 关注 0 浏览92 1答案
-
Java套接字。服务器-客户端通信
2021-01-29 关注 0 浏览112 1答案