www.pudn.com > SnmpMaster.rar > snmptrapd.java


package snmpmaster;

import java.lang.*;
import java.util.*;
import java.net.*;
import com.adventnet.snmp.snmp2.*;

public class snmptrapd implements SnmpClient {
  static SnmpAPI api;
  public snmptrapd() {
  }
public void ResiveTrap()
{
 api = new SnmpAPI();
        api.start(); // Start SNMP API
        SnmpSession session = new SnmpSession(api);
        session.addSnmpClient(new snmptrapd());// Open session
        // set local port
	session.setLocalPort(162); //设置trap的监听端口
        // Open the session
        try { session.open(); }
        catch (SnmpException e) {
            System.err.println(e);
            return;
        }
System.out.println("Waiting to receive traps in the port "+session.getLocalPort() +".......");
}

  public boolean authenticate(SnmpPDU pdu, String community) {
        return (pdu.getCommunity().equals(community));
  }
  public boolean callback(SnmpSession session,SnmpPDU pdu, int requestID) {
  //trap数据在这里进行处理
           if(pdu == null)
           return false;
        if (pdu.getCommand() == api.TRP_REQ_MSG) {
            System.out.println("Trap received from: "
                +pdu.getAddress() +", community: " + pdu.getCommunity());
            System.out.println("Enterprise: " + pdu.getEnterprise());
            System.out.println("Agent: " + pdu.getAgentAddress());
            System.out.println("TRAP_TYPE: " + pdu.getTrapType());
            System.out.println("SPECIFIC NUMBER: " + pdu.getSpecificType());
            System.out.println("Time: " + pdu.getUpTime()+"\nVARBINDS:");

            System.out.println("AgentAddr: " + pdu.getAgentAddr());
            System.out.println("RemotHost: " + pdu.getRemoteHost());
            // 获得Trap的信息返回值
            for (Enumeration e = pdu.getVariableBindings().elements();e.hasMoreElements();)
                System.out.println(((SnmpVarBind) e.nextElement()).toTagString());



        }
        else if(pdu.getCommand() == api.TRP2_REQ_MSG)
        {
            System.out.println("Trap received from: "
                +pdu.getAddress() + ", community: " + pdu.getCommunity());
            for (Enumeration e = pdu.getVariableBindings().elements();e.hasMoreElements();)
                System.out.println(((SnmpVarBind) e.nextElement()).toTagString());
        }
        else
            System.err.println("Non trap PDU received.");

        System.out.println(""); // a blank line between traps
//
        return true;

  }//////////////////callback//////////////////////////////////////////
  public void debugPrint(String debugOutput) {
        System.out.println(debugOutput);
        return;
  }

   public static void main(String[] args) {
    snmptrapd trapd = new snmptrapd();
    trapd.ResiveTrap();
  }

}