【问题标题】:What is the purpose of setReuseAddress in ServerSocket?ServerSocket中setReuseAddress的目的是什么?
【发布时间】:2014-06-01 03:35:22
【问题描述】:

我有一个简单的逻辑 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"here 方法的用途。我已经查看了this link,但我并不清楚它的目的。

【问题讨论】:

    标签: java sockets


    【解决方案1】:

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

    目前的解释很明确here,看看那里。还有API有很好的解释

    只需作为配置参数,可以使用该方法进行修改。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 2015-03-21
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 2015-04-02
      • 2014-01-31
      相关资源
      最近更新 更多