Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何绕过超时时间立即关闭套接字?_Java_Sockets_Timeout - Fatal编程技术网

Java 如何绕过超时时间立即关闭套接字?

Java 如何绕过超时时间立即关闭套接字?,java,sockets,timeout,Java,Sockets,Timeout,在Java中,当您关闭一个套接字时,它不再做任何事情,但它实际上会在超时后关闭TCP连接 我需要使用数千个套接字,我希望在关闭它们之后立即关闭它们,而不是在超时之后,这会浪费我的时间和资源。我能做什么?如果您正在运行服务器,那么这是正确的解决方案。通过循环利用和一系列其他旨在使用Java运行服务器的优化,它将比手工操作更好地管理一切 关闭套接字将断开Java对象与操作系统的连接,这意味着它不会占用JVM之外的任何资源,因此它确实不应该是一个问题。但是,如果Java的垃圾收集/终结方案的最小开销太

在Java中,当您关闭一个套接字时,它不再做任何事情,但它实际上会在超时后关闭TCP连接


我需要使用数千个套接字,我希望在关闭它们之后立即关闭它们,而不是在超时之后,这会浪费我的时间和资源。我能做什么?

如果您正在运行服务器,那么这是正确的解决方案。通过循环利用和一系列其他旨在使用Java运行服务器的优化,它将比手工操作更好地管理一切


关闭套接字将断开Java对象与操作系统的连接,这意味着它不会占用JVM之外的任何资源,因此它确实不应该是一个问题。但是,如果Java的垃圾收集/终结方案的最小开销太大,那么Java就不是一个有效的解决方案(因为您的问题不再局限于套接字编程)。尽管我不得不说一个高效的垃圾收集器并不比显式管理内存差多少(实际上可以做得更好)。

我发现通过使用
socket.setReuseAddress(boolean)
,您可以告诉JVM重用端口,即使它处于超时时间。

'我希望在关闭端口后完全关闭它们,而不是浪费我的时间和资源
不,你没有。您希望TCP/IP正常工作,而等待时间状态是其中至关重要的一部分。如果您担心TIME\u WAIT(等待时间)状态,最快的答案是接收FIN的人,而不是第一个发送FIN的人。

您可能会看到插槽处于
TIME\u WAIT
状态。这是插座进入“主动关闭”连接一侧的正常状态
TIME\u WAIT
的存在有一个很好的理由,因此您应该注意不要简单地重用地址

我在我的博客中写到了
TIME\u WAIT
,它存在的原因以及在这里编写服务器时可以做些什么:


总之,如果可以,请更改协议,以便您的客户端输入
TIME\u WAIT

两端都应该对我的任务有效。