我试图检查本地网络上的IP是否打开了给定的PORT。为此,我迭代子网中的所有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 :(得分:2)
不应该这一行:
InetSocketAddress temp = new InetSocketAddress("10.0.0.", PORT);
是:
InetSocketAddress temp = new InetSocketAddress("10.0.0." + i, PORT);