ServerSocket中setReuseAddress的目的是什么?

时间:2014-04-17 02:09:38

标签: java sockets

我有一个简单的逻辑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;
  }

我是socket编程的新手,所以我无法理解方法"setReuseAddress"的用法。我已经完成了this link,但我没有明确它的目的。

1 个答案:

答案 0 :(得分:7)

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

当前的解释非常清晰here,请看一下。 API也有很好的解释

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

  

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