0

我试图检查本地网络上的 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),它会起作用。有谁知道是什么导致我的问题或如何解决它?

4

1 回答 1

2

这行不应该:

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

是:

InetSocketAddress temp = new InetSocketAddress("10.0.0." + i, PORT);
于 2012-10-22T21:28:50.827 回答