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

SNMP编程

开发平台:

C/C++

  1. /* $Id: snmpv2cinformreqd.src,v 1.4.2.3 2009/01/28 13:29:38 prathika Exp $ */
  2. /*
  3.  * @(#)snmpv2cinformreqd.java
  4.  * Copyright (c) 1996-2009 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.     session.setTransportProvider("com.adventnet.snmp.snmp2.TcpTransportImpl");
  50.     // Options that will be used for communication. This can be modified by the user 
  51.     // according to his need.
  52.     ProtocolOptions params = null;
  53.     if(values[1] != null)   {
  54.         params = new TcpProtocolOptionsImpl(null, 0, Integer.parseInt(values[1]));
  55.     }
  56.     else    {
  57.         params = new TcpProtocolOptionsImpl(null, 0, 162);
  58.     }
  59.     session.setProtocolOptions(params);
  60.       
  61.     // set community
  62.     if(values[2] != null)
  63.     {
  64.       session.setCommunity(values[2]);
  65.     }    
  66.     // Open the session
  67.     try { 
  68.         session.open();
  69.         System.out.println ("Waiting to receive SNMP Inform requestsn");
  70.     }
  71.     catch (SnmpException e) {
  72.       System.err.println(e);
  73.       System.exit(1);
  74.     }
  75.   }
  76.     
  77.   public boolean authenticate(SnmpPDU pdu, String community){
  78.       return (pdu.getCommunity().equals(community));
  79.   }
  80.   
  81.     /*
  82.      * Callback method that is invoked on receiving an SNMP Inform request message
  83.      */
  84.   public boolean callback(SnmpSession session,SnmpPDU pdu, int requestID) {
  85.     // Validate SNMP command type
  86.     if (pdu.getCommand() == api.INFORM_REQ_MSG) 
  87.     {
  88.       System.out.println("inform request received from: " + 
  89.                         ((TcpProtocolOptionsImpl)(pdu.getProtocolOptions())).getRemoteHost()+", community: " + 
  90.                         pdu.getCommunity());
  91.       System.out.println("VARBINDS:");
  92.       // print varbinds
  93.       for (Enumeration e = pdu.getVariableBindings().elements();
  94.                                                 e.hasMoreElements();)
  95.       {
  96.         System.out.println(((SnmpVarBind) e.nextElement()).toTagString());
  97.       }
  98.     }
  99.     else
  100.     {
  101.       System.err.println("Unexpected SNMP message recieved.");
  102.     }
  103.     System.out.println(""); 
  104.     return true;
  105.   }
  106.  
  107.   public void debugPrint(String debugOutput){
  108.     System.out.println(debugOutput);
  109.     return;    
  110.   }
  111. }