繁体   English   中英

是否可以在不连接IP端口的情况下检查IP端口是否打开?

[英]Can I check if an IP port is open or not without connecting to the port?

因此,我要尝试的是扫描本地网络中的特定端口(4444),然后返回该端口是否打开。 我现在正在做的是这样的:

    private static boolean portIsOpen(String ip, int port, int timeout) {
        try {
            Socket socket = new Socket();
            socket.connect(new InetSocketAddress(ip, port), timeout);
            socket.close();
            return true;
        } catch (Exception ex) {
            return false;
        }
    }

我将使用这种方法在本地网络上搜索服务器(请考虑Minecraft的多人游戏,以及它如何扫描本地网络中的开放游戏)。 我现在的问题是,当我使用此方法时,服务器端会中断,因为服务器会在有任何连接时立即发送数据。 是否可以在不连接端口的情况下检查端口是否打开?

是否可以在不连接端口的情况下检查端口是否打开?

一言以蔽之。

没有支持此功能的标准机制。 您可以执行此操作的唯一方法是设计,实施和部署自定义服务,以在本地网络上的所有计算机上执行此操作。


正如EJP所指出的那样,编写良好的服务应该能够应对无需发送或接收数据即刻关闭TCP连接的客户端。

但是,如果您的目的是在没有任何人注意探针的情况下进行此操作,那么祝您好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM