snmpv2cinformreqd.java.txt
上传用户:aonuowh
上传日期:2021-05-23
资源大小:35390k
文件大小:3k
源码类别:

SNMP编程

开发平台:

C/C++

  1. /* $Id: snmpv2cinformreqd.src,v 1.4 2002/09/09 05:36:52 parasuraman Exp $ */
  2. /*
  3.  * @(#)snmpv2cinformreqd.java
  4.  * Copyright (c) 1996-2003 AdventNet, Inc. All Rights Reserved.
  5.  * Please read the associated COPYRIGHTS file for more details.
  6.  */
  7. /**
  8.  * This is an example program for receiving INFORM REQUESTs using the
  9.  * com.adventnet.snmp.snmp2 package of AdventNetSNMP2 api.
  10.  * The user could run this application by giving any one of the following usage.
  11.  *  
  12.  * java snmpv2cinformreqd [options]
  13.  *
  14.  * java snmpv2cinformreqd [-d] [-p port][-c community]
  15.  * e.g. 
  16.  * java snmpv2cinformreqd -p 162 -c public 
  17.  *
  18.  * Options:
  19.  * [-d]                - Debug output. By default off.
  20.  * [-p] <port>         - remote port no. By default 162.
  21.  * [-c] <community>    - community String. By default "public".               
  22.  */
  23. import java.lang.*;
  24. import java.util.*;
  25. import java.net.*;
  26. import com.adventnet.snmp.snmp2.*;
  27. public class snmpv2cinformreqd implements SnmpClient {
  28.   static SnmpAPI api;
  29.   public static void main(String args[]) {
  30.        
  31.     // Take care of getting options
  32.     String usage = "snmpv2cinformreqd [-d] [-p port][-c community]";
  33.     String options[] = { "-d", "-p", "-c"};
  34.     String values[] = { "None", null, null};
  35.     ParseOptions opt = new ParseOptions(args,options,values, usage);
  36.     // Start SNMP API
  37.     api = new SnmpAPI();
  38. // Enable the debug mode.
  39. api.setDebug(true);
  40.     if (values[0].equals("Set")) 
  41. {
  42. api.setDebug( true );
  43. }
  44.       
  45.     if (opt.remArgs.length>0) opt.usage_error();
  46.     // Open session 
  47.     SnmpSession session = new SnmpSession(api);
  48.     session.addSnmpClient(new snmpv2cinformreqd());
  49.     // set local port
  50.     try {
  51. if (values[1] != null)
  52. {
  53.          session.setLocalPort( Integer.parseInt(values[1]) );        
  54. }
  55.        else
  56. {
  57.          session.setLocalPort(162);
  58. }
  59.     }
  60.     catch (NumberFormatException ex) {
  61.       System.err.println("Invalid Integer Arg");
  62.     }
  63.       
  64.     // set community
  65.     if(values[2] != null)
  66. {
  67.       session.setCommunity(values[2]);
  68.     }    
  69.     // Open the session
  70.     try { 
  71. session.open();
  72. System.out.println ("Waiting to receive SNMP Inform requestsn");
  73. }
  74.     catch (SnmpException e) {
  75.       System.err.println(e);
  76.       System.exit(1);
  77.     }
  78.   }
  79.     
  80.   public boolean authenticate(SnmpPDU pdu, String community){
  81.       return (pdu.getCommunity().equals(community));
  82.   }
  83.   
  84. /*
  85.  * Callback method that is invoked on receiving an SNMP Inform request message
  86.  */
  87.   public boolean callback(SnmpSession session,SnmpPDU pdu, int requestID) {
  88.     // Validate SNMP command type
  89.     if (pdu.getCommand() == api.INFORM_REQ_MSG) 
  90. {
  91.   // use pdu.getAddress().getHostAddress() instead of pdu.getAddress()
  92.   // in case of delays due to DNS lookup.
  93.       System.out.println("inform request received from: " + 
  94.    pdu.getAddress() + ", community: " + 
  95. pdu.getCommunity());
  96.       System.out.println("VARBINDS:");
  97.       // print varbinds
  98.       for (Enumeration e = pdu.getVariableBindings().elements();
  99.    e.hasMoreElements();)
  100.   {
  101.         System.out.println(((SnmpVarBind) e.nextElement()).toTagString());
  102.       }
  103. }
  104.     else
  105. {
  106.       System.err.println("Unexpected SNMP message recieved.");
  107. }
  108.     System.out.println(""); 
  109.     return true;
  110.   }
  111.  
  112.   public void debugPrint(String debugOutput){
  113.     System.out.println(debugOutput);
  114.     return;    
  115.   }
  116. }