Tôi nghĩ rằng nếu bạn chỉ muốn ping một địa chỉ, bạn có thể sử dụng mã này:
try {
URL url = new URL("http://"+params[0]);
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setRequestProperty("User-Agent", "Android Application:"+Z.APP_VERSION);
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1000 * 30); // mTimeout is in seconds
urlc.connect();
if (urlc.getResponseCode() == 200) {
Main.Log("getResponseCode == 200");
return new Boolean(true);
}
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Và, nếu bạn muốn để có tương đương với một ping, bạn có thể đặt một System.currentTimeMillis() trước và sau cuộc gọi, và tính toán sự khác biệt.
hy vọng rằng sẽ giúp đoạn
đang tìm thấy trong here
này đã làm việc tốt cho tôi trừ dành cho Android 4 thiết bị mà nó luôn luôn thất bại. Ý tưởng nào? – dee
Bạn cần phải chuyển cuộc gọi khỏi chuỗi chính của mình. Android 4 thực thi không có cuộc gọi mạng nào trên luồng chính để ngăn chặn các vấn đề ANR. –
Điều này sẽ thiết lập kết nối TCP với bắt tay 3 chiều đầy đủ. Vì vậy, thời gian là không có gì giống như một ping ('ICMP-echo -> ICMP-reply') –