私はAndroidアプリケーションを開発しています。WiFiネットワーク内の各ホストを検出する必要があります。特定のネットワークの255。Android(JAVA)のWiFiネットワークでホストを検出する方法
このソリューションは完全に動作しますが、問題はありますが、実行時間..アプリケーションを開始するたびに、私は約256秒待っています。
これは、(私はスタック上でこのコードを見つけ、私は私の状態で動作するようにコードを修正)私のソースコードです:
public class ScanNetwork {
ArrayList <String> hosts;
int i;
boolean finish = false;
public ArrayList <String> ScanNetwork(String ipAddress) {
hosts = new ArrayList <String>();
final String subnet = ipAddress.substring(0, ipAddress.lastIndexOf("."));
for (i = 0; i < 256; i++) {
String currentHost = subnet + "." + i;
Process p1 = null;
int returnVal = 0;
try {
p1 = Runtime.getRuntime().exec("ping -w 50 -c 1 " + currentHost);
returnVal = p1.waitFor();
} catch (IOException e) {
System.out.println("Log: " + e.toString());
} catch (InterruptedException e) {
System.out.println("Log: " + e.toString());
}
boolean reachable = (returnVal == 0);
if (reachable) {
if (!hosts.contains(currentHost)) {
hosts.add(currentHost);
System.out.println(currentHost);
}
}
}
return hosts;
}
}
このソースコードは完璧ですが、実行時間が過剰で、他があります方法はネットワーク内のすべてのホストを取得するには?
どうすればこの問題を解決できますか?
(これは自宅で少ないので、企業ネットワーク内の可能性が高い)ではない、誰もがpingに応答することを忘れないでください36277912/how-to-scan-ip-in-android/36278723#36278723)。それはあなたを助けるかもしれません。タイムアウトを5から20に増やしてください。ローカルネットワーク内のすべての 'IP 'が得られます。 –