2012-10-22 18 views
0

我試圖檢查本地網絡上的IP是否打開給定PORT。爲此,我遍歷子網中的所有IP。這是我的代碼如下所示:無法迭代和綁定具有相同端口和不同IP的套接字

for(int i = 0; i<256; i++){ 
     Socket kkSocket = new Socket(); 
     try{ 
      kkSocket.bind(null); 
      InetSocketAddress temp = new InetSocketAddress("10.0.0.", PORT); 
      kkSocket.connect(temp, 10); 

      Log.i("Scan", "found " + temp.getHostName()); 


     }catch(Exception e){ } 
    } 

這完美的作品在我的電腦上,但是當我嘗試我的Android設備,它不會工作在運行它。我試圖用Thread.sleep(100),kkSocket.close()和kkSocket.keepAlive(false)延遲它,但似乎沒有任何工作。它工作,如果我不要迭代,只是試圖連接到10.0.0.45(這是正確的IP),但那是黑客(我不應該知道哪個IP測試)。有誰知道是什麼原因導致我的問題或如何解決它?

+0

那麼,是什麼問題? 「不起作用」不是很準確。 –

+0

您必須關閉插座。這不是可選的,或者你只是'嘗試'的東西。你也不能忽視異常。 – EJP

回答

2

不應該在該行:

InetSocketAddress temp = new InetSocketAddress("10.0.0.", PORT); 

是:

InetSocketAddress temp = new InetSocketAddress("10.0.0." + i, PORT); 
+1

Omg。這是一個程序員最糟糕的噩夢:頁 – rtc11

相關問題