我已經寫在端口6789查驗C類IP地址,這個代碼,線程開始時,我點擊了一個名爲Ping按鈕,它會檢索一個端口6789打開的所有IP地址.. 。但我需要的是刷新(重新ping)每一個,讓我們說5秒,並添加ips最近加入,如果存在,並省略離開港口的。 我調試了幾個小時,但沒有希望!!!平每5秒 - Android電子
在此先感謝:DD
Thread pingo = new Thread(new Runnable() {
public void run() {
if (readableNetmask.equals("255.255.255.0")) {
for (int i = 2; i <= 254; i++) {
String ip_address = readableIPAddress;
String oct1 = "", oct2 = "", oct3 = "", oct4 = "";
StringTokenizer stok = new StringTokenizer(
ip_address, ".");
while (stok.hasMoreTokens()) {
oct1 = stok.nextToken();
oct2 = stok.nextToken();
oct3 = stok.nextToken();
oct4 = stok.nextToken();
}
to_ping_ip = oct1 + "." + oct2 + "." + oct3 + "."
+ String.valueOf(i);
if (pingAddress(to_ping_ip, 6789)) {
handler.post(new UpdateIPListViewRunnable());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// ips_List.add(to_ping_ip);
}
}
}
}
});
pingo.start();
PingAddress()函數:
public boolean pingAddress(String ip, int port) {
Socket socket = new Socket();
try {
socket.connect(new InetSocketAddress(ip, port), 200);
socket.close();
} catch (IOException e) {
return false;
}
return true;
}
結果列表中的地址出現:
static public class UpdateIPListViewRunnable implements Runnable {
public void run() {
arrayAdapter.add(to_ping_ip);
arrayAdapter.notifyDataSetChanged();
}
}
您的代碼中似乎沒有涉及任何「5秒鐘內重做」的內容 - 這使得很難理解您嘗試過的內容。你的問題是在5秒鐘內重試,或者只是讓單個ping工作?請更簡潔。 – mah 2013-05-01 10:46:15
道歉的模糊性,但我沒有提到,我已經嘗試過(我已經搜查)。我有這個代碼,它工作正常,每個ip(1-254)一個ping,但我希望它每5秒自動ping,所以要更新哪些IP加入,離開或仍然在該端口上...謝謝你 – spac3hit 2013-05-01 10:56:11