ServerSocket中setReuseAddress的目的是什么?

我有一个简单的逻辑Java,它检查端口是否已被使用:

public static boolean isPortInUse(int port) { ServerSocket socket = null; try { socket = new ServerSocket(port); socket.setReuseAddress(true); } catch (Exception e) { return true; } finally { if (socket != null) { try { socket.close(); } catch (Exception e) { return true; } } } return false; } 

我是套接字编程的新手,所以我无法理解这里使用方法"setReuseAddress"的用途。 我已经通过这个链接,但我没有明确它的目的。

这个解释来自涉及一些低级套接字属性和协议的TCP机制,基本上有一个名为SO_REUSEADDR的选项,您可以在创建套接字时使用方法setReuseAddress()启用或禁用此行为来定义。

目前的解释在这里定义很好,看看那里。 API也有很好的解释

只需将其作为可使用该方法修改的配置参数。

在使用bind(SocketAddress)绑定套接字之前启用SO_REUSEADDR允许套接字绑定,即使先前的连接处于超时状态。