套接字:使用 Java 发现端口可用性

新手上路,请多包涵

如何使用 Java 以编程方式确定给定机器中端口的可用性?

即给定一个端口号,确定它是否已经被使用?

原文由 user54075 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 386
1 个回答

这是来自 Apache camel 项目的 实现

 /**
 * Checks to see if a specific port is available.
 *
 * @param port the port to check for availability
 */
public static boolean available(int port) {
    if (port < MIN_PORT_NUMBER || port > MAX_PORT_NUMBER) {
        throw new IllegalArgumentException("Invalid start port: " + port);
    }

    ServerSocket ss = null;
    DatagramSocket ds = null;
    try {
        ss = new ServerSocket(port);
        ss.setReuseAddress(true);
        ds = new DatagramSocket(port);
        ds.setReuseAddress(true);
        return true;
    } catch (IOException e) {
    } finally {
        if (ds != null) {
            ds.close();
        }

        if (ss != null) {
            try {
                ss.close();
            } catch (IOException e) {
                /* should not be thrown */
            }
        }
    }

    return false;
}

他们也在检查 DatagramSocket 以检查端口在 UDP 和 TCP 中是否可用。

原文由 David Santamaria 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题