簡體   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