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();
}
}