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

SNMP编程

开发平台:

C/C++

  1. /* $Id: snmpv2cinformreqd.src,v 1.4 2002/09/09 05:41:02 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. session.setProtocol(session.TRANSPORT_PROVIDER);
  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. }