gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:31:08 25 4
gpt4 key购买 nike

我在两个 java 应用程序之间有一个套接字 tcp 连接。当一侧关闭 socket 时,另一侧保持打开状态。但我希望它被关闭。而且我也迫不及待地想看看它是否可用,然后关闭它。我想要某种方法从一侧完全关闭它。我能做什么?

最佳答案

TCP 不是这样工作的。操作系统不会释放资源,即文件描述符和端口,直到应用程序明确关闭套接字或死掉,即使 TCP 堆栈知道另一端关闭它。在收到来自对等方的 FIN 时,内核不会向用户应用程序回调。操作系统向另一方确认它,但在发送其 FIN 数据包之前等待应用程序调用 close()。看看 TCP state transition diagram - 你在被动关闭框中。

在不为每个套接字分配一个线程的情况下检测这种情况的一种方法是使用 select/poll/epoll/kqueue 函数族。被动关闭的套接字将被指示为可读,并且读取尝试将返回 EOF。

希望这对您有所帮助。

关于java - 是否可以在客户端和服务器端关闭 Java 套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2165670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com