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

SNMP编程

开发平台:

C/C++

  1. * @(#)FetchTable.java
  2.  * Copyright (c) 1996-2003 AdventNet, Inc. All Rights Reserved.
  3.  * Please read the associated COPYRIGHTS file for more details.
  4.  */
  5. /**
  6.  * This is an example program to explain how to write an application to 
  7.  * retrieve the sample table with column ids .1.3.6.1.4.1.2.2.1.1, 
  8.  * .1.3.6.1.4.1.2.2.1.2, .1.3.6.1.4.1.2.2.1.3, by using 
  9.  * com.adventnet.snmp.snmp2 package of AdventNetSNMP API.
  10.  *
  11.  * The user could run this application by giving the following usage.
  12.  *  
  13.  * java FetchTable
  14.  *
  15.  *
  16. import java.lang.*;
  17. import java.util.*;
  18. import java.net.*;
  19. import com.adventnet.snmp.snmp2.*;
  20. public class FetchTable {
  21. public static void main(String args[]) {
  22.  // Start SNMP API
  23.         SnmpAPI api = new SnmpAPI();
  24. // Open session
  25. SnmpSession session = new SnmpSession(api); 
  26. try 
  27. {
  28. session.open();
  29. }
  30. catch (SnmpException e )
  31. {
  32. System.err.println("Error opening socket: "+e);
  33. }
  34. // Build Get request PDU
  35. SnmpPDU pdu = new SnmpPDU();
  36. UDPProtocolOptions option = new UDPProtocolOptions("localhost");
  37. pdu.setProtocolOptions(option); 
  38. // get the OIDs
  39. SnmpOID[] oids = new SnmpOID[3];
  40. oids[0]=new SnmpOID(".1.3.6.1.4.1.2.2.1.1");
  41. oids[1]=new SnmpOID(".1.3.6.1.4.1.2.2.1.2");
  42. oids[2]=new SnmpOID(".1.3.6.1.4.1.2.2.1.3");
  43. // Send PDU and receive response PDU
  44. for(int i=0;i<3;i++)
  45. {
  46. pdu.addnull(oids[i]);
  47. }
  48. SnmpOID rootoid = new SnmpOID(".1.3.6.1.4.1.2.2.1.");
  49. String root = rootoid.toString();
  50. boolean comeOut = false;
  51. int rowCount = 1;
  52. while(!comeOut)
  53. {
  54. SnmpPDU result = session.syncSend(pdu);
  55. if(result == null)
  56. {
  57. System.out.println("Request timed out!");
  58. comeOut = true;
  59. break;
  60. }
  61. int size = pdu.getVariableBindings().size();
  62. for(int i=0;i<size;i++)
  63. {
  64. if(pdu.getObjectID(i).toString().startsWith(root))
  65. {
  66. comeOut = true;
  67. break;
  68. }
  69. }
  70. if(i == size)
  71. {
  72. System.out.println("ROW " + (rowCount++));
  73. System.out.println(result.printVarBinds() + "n" );
  74. }
  75. pdu.setCommand(SnmpAPI.GETNEXT_REQ_MSG);
  76. }
  77. // close session
  78. session.close();
  79. // close api thread
  80. api.close();
  81.  }
  82. }