Java實現ping用Java來Ping機器,有兩個做法。一個是傳統的調用命令行執行Ping命令的做法。這種做法的好處是速度快,比較可靠。缺點 是,不同的操作系統,甚至Windows的不同版本,其執行和返回結果格式都可能不同,造成跨平臺的不便以及代碼的啰嗦。第二個方法自然就是使用大家都熟 知的Java 5提供的InetAddress的isReachable方法。這個函數并非使用ICMP的ping,而是僅僅用TCP連一下7號端口而已。參考代 碼:public static boolean ping(String ip) {淘寶女裝夏裝新款
try {
InetAddress ipaddress = InetAddress.getByName(ip);
return ipaddress.isReachable(2000);
} catch (Exception ex) {
ex.printStackTrace();
return false;
}
}
SNMP ping
所謂SNMP Ping其實就是用SNMP去get一個非常基本的OID看對方有無反應。如果能夠返回數據,說明這是一個SNMP節點,可以通過SNMP配合MIB庫去 獲取更多的業務數據。例如磁盤、CPU、內存、端口力量等等基本的信息,都有相關的SNMP MIB進行定義。
SnmpContextv2c context = new SnmpContextv2c(ip, 161);
context.setCommunity("public");
BlockPdu pdu = new BlockPdu(context);
pdu.setRetryIntervals(new int[] { 1000 });
String sysUpTime = "1.3.6.1.2.1.1.3.0";
pdu.addOid(sysUpTime);
Object result = pdu.getResponseVariable();
代碼中用v2c,并假設community是public,超時時間1秒。獲取sysUpTime也就是設備啟動時間。如果有返回,認為節點存在且SNMP協議已啟動。
try {
InetAddress ipaddress = InetAddress.getByName(ip);
return ipaddress.isReachable(2000);
} catch (Exception ex) {
ex.printStackTrace();
return false;
}
}
SNMP ping
所謂SNMP Ping其實就是用SNMP去get一個非常基本的OID看對方有無反應。如果能夠返回數據,說明這是一個SNMP節點,可以通過SNMP配合MIB庫去 獲取更多的業務數據。例如磁盤、CPU、內存、端口力量等等基本的信息,都有相關的SNMP MIB進行定義。
SnmpContextv2c context = new SnmpContextv2c(ip, 161);
context.setCommunity("public");
BlockPdu pdu = new BlockPdu(context);
pdu.setRetryIntervals(new int[] { 1000 });
String sysUpTime = "1.3.6.1.2.1.1.3.0";
pdu.addOid(sysUpTime);
Object result = pdu.getResponseVariable();
代碼中用v2c,并假設community是public,超時時間1秒。獲取sysUpTime也就是設備啟動時間。如果有返回,認為節點存在且SNMP協議已啟動。