无法使用相同的端口和不同的IP迭代和绑定套接字

时间:2012-10-22 20:21:09

标签: java android sockets

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

1 个答案:

答案 0 :(得分:2)

不应该这一行:

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

是:

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