Javaはpingとsnmppingを実現します.

1437 ワード

回転:http://www.blogjava.net/javagrass/archive/2011/05/20/350688.html
一.Java実現
Javaでpingを実現するにはJavaでPingマシンを作る方法が二つあります.一つは従来のコマンドラインでPingコマンドを実行する方法です.このやり方の長所はスピードが速くて、信頼できるところです.欠点は、異なるオペレーティングシステム、さらにはWindowsの異なるバージョンでも、その実行とリターンの結果のフォーマットは異なるかもしれません.プラットフォームをまたぐ不便さとコードの煩雑さを引き起こします.第二の方法はもちろん、みんながよく知っているJava 5が提供するInetAddresの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を使って、非常に基本的な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(); 
コードはv 2 cで、communityはpublicで、タイムアウト時間は1秒です.sysUpTime、つまりデバイス起動時間を取得します.戻りがある場合、ノードが存在すると考えられ、SNMPプロトコルが起動された.