[英]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.