我需要創建一個線程池來使用java語言同時ping一系列ip地址。如何使用java(線程)ping一系列IP地址的snmp設備?
請幫我一把。
編輯了1
如果有很多線程的創建,我們再確定是否有顯式調用stop()方法停止線程?還是會被照顧?
我需要創建一個線程池來使用java語言同時ping一系列ip地址。如何使用java(線程)ping一系列IP地址的snmp設備?
請幫我一把。
編輯了1
如果有很多線程的創建,我們再確定是否有顯式調用stop()方法停止線程?還是會被照顧?
這是pingig子任務的implementation。使用引用的有效負載創建線程池和線程不應太複雜。
編輯
如果你可以修改這些設備上的客戶端代碼,我提出一個自定義的協議,而不是使用echo端口 - 有點像心跳,你經常發小信息給客戶端(上標準或不同的端口),並期望在規定時間內得到答案。
編輯2
對於螺紋基礎知識,我真的建議在尋找一個Java教程。首先:實現類似public class PingThread extends Thread
的類,並將鏈接中的代碼放在run方法中的while(true) {...}
循環中。使用Thread.sleep()
可以在同一個循環中添加ping之間的等待時間。 如果您確實需要ThreadGroup,請覆蓋構造函數Thread(ThredGroup group, String name)
,以便可以在指定的組中創建PingThread。
您可能需要執行一個開關停止PingThread(應該由幾乎每個Java教程覆蓋),
的Java沒有默認實現ICMP的,所以它不是能ping通從Java主機與標準庫。您的其他選擇是尋找Java ICMP實現(我不知道是否存在),或者從Java調用系統上的'ping'可執行文件並解析輸出。
編輯:Andreas_D的鏈接指示InetAddress.isReachable()使用ICMP迴應請求來ping主機,這樣就可以實現ping。
您可以從該網頁採取了ReachableTest代碼並更改ReachableTest類到一個Runnable然後你就可以在自己的線程或使用執行服務從java.util.concurrent中運行:
public class ReachableTest implements Runnable {
private String host;
public ReachableTest(String host) {
this.host = host;
}
public void run() {
try {
InetAddress address = InetAddress.getByName(host);
System.out.println("Name: " + address.getHostName());
System.out.println("Addr: " + address.getHostAddress());
System.out.println("Reach: " + address.isReachable(3000));
}
catch (UnknownHostException e) {
System.err.println("Unable to lookup " + host);
}
catch (IOException e) {
System.err.println("Unable to reach " + host);
}
}
}
它不談論線程的概念。只有可用的測試和ping才能得到關注。 – MalarN 2010-01-12 10:56:30