0

ローカル ネットワーク上の 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 をテストするかを知る必要はありません)。私の問題の原因や修正方法を知っている人はいますか?

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 に答える