2012-10-19 67 views
4

我想在短時間內找到本地網絡上的服務器的IP地址。我知道應用程序在服務器上使用的端口。在Java/Android中使用已知端口在本地網絡中查找服務器IP

我試過這個,但它太慢了。即使當我知道IP,響應時間太長(每個IP大約4秒左右)。考慮到這種方法,從10.0.0.0到10.0.0.255掃描整個子網需要幾分鐘的時間。

 String ip = "10.0.0.45"; 

     try { 
      InetAddress ping = InetAddress.getByName(ip); 
      Socket s = new Socket(ping, 32400); 
      System.out.println("Server found on IP: " + ping.getCanonicalHostName()); 
      s.close(); 
     } catch (IOException e) { 
      System.out.println("Nothing"); 
     } 
} 

我可以使用線程,但這仍然會很慢。我看到應用程序發現IP以毫秒爲單位。他們如何做到這一點? Java代碼將不勝感激!

回答

3

你會想要做的兩個事情 - 使用線程同時檢查多臺主機,並給套接字連接超時低。

This answer表現出非常相似的例子。

相關問題