1 20 21 22 package org.snmp4j.test; 23 24 import org.snmp4j.Snmp; 25 import org.snmp4j.smi.Address; 26 import org.snmp4j.security.SecurityProtocols; 27 import org.snmp4j.smi.UdpAddress; 28 import org.snmp4j.security.SecurityModels; 29 import org.snmp4j.TransportMapping; 30 import org.snmp4j.smi.OctetString; 31 import org.snmp4j.transport.DefaultTcpTransportMapping; 32 import org.snmp4j.mp.MPv3; 33 import org.snmp4j.transport.DefaultUdpTransportMapping; 34 import org.snmp4j.security.USM; 35 import org.snmp4j.smi.GenericAddress; 36 import java.net.UnknownHostException ; 37 import java.io.IOException ; 38 import org.snmp4j.util.MultiThreadedMessageDispatcher; 39 import org.snmp4j.util.ThreadPool; 40 import org.snmp4j.MessageDispatcherImpl; 41 import org.snmp4j.smi.TcpAddress; 42 import org.snmp4j.CommandResponder; 43 import org.snmp4j.CommandResponderEvent; 44 import org.snmp4j.mp.MPv1; 45 import org.snmp4j.mp.MPv2c; 46 47 public class MultiThreadedTrapReceiver implements CommandResponder { 48 49 56 private MultiThreadedMessageDispatcher dispatcher; 57 private Snmp snmp = null; 58 private Address listenAddress; 59 private ThreadPool threadPool; 60 61 private int n = 0; 62 private long start = -1; 63 64 65 public MultiThreadedTrapReceiver() { 66 } 68 69 private void init() throws UnknownHostException , IOException { 70 threadPool = ThreadPool.create("Trap", 2); 71 dispatcher = 72 new MultiThreadedMessageDispatcher(threadPool, 73 new MessageDispatcherImpl()); 74 listenAddress = 75 GenericAddress.parse(System.getProperty("snmp4j.listenAddress", 76 "udp:0.0.0.0/162")); 77 TransportMapping transport; 78 if (listenAddress instanceof UdpAddress) { 79 transport = new DefaultUdpTransportMapping((UdpAddress)listenAddress); 80 } 81 else { 82 transport = new DefaultTcpTransportMapping((TcpAddress)listenAddress); 83 } 84 snmp = new Snmp(dispatcher, transport); 85 snmp.getMessageDispatcher().addMessageProcessingModel(new MPv1()); 86 snmp.getMessageDispatcher().addMessageProcessingModel(new MPv2c()); 87 snmp.getMessageDispatcher().addMessageProcessingModel(new MPv3()); 88 USM usm = new USM(SecurityProtocols.getInstance(), 89 new OctetString(MPv3.createLocalEngineID()), 0); 90 SecurityModels.getInstance().addSecurityModel(usm); 91 snmp.listen(); 92 } 93 94 public void run() { 95 try { 96 init(); 97 snmp.addCommandResponder(this); 98 } 99 catch (Exception ex) { 100 ex.printStackTrace(); 101 } 102 } 103 104 public static void main(String [] args) { 105 MultiThreadedTrapReceiver multithreadedtrapreceiver = new 106 MultiThreadedTrapReceiver(); 107 multithreadedtrapreceiver.run(); 108 } 109 110 public void processPdu(CommandResponderEvent event) { 111 if (start < 0) { 112 start = System.currentTimeMillis()-1; 113 } 114 n++; 116 if ((n % 100 == 1)) { 117 System.out.println("Processed " + 118 (n / (double)(System.currentTimeMillis() - start)) * 1000 + 119 "/s, total="+n); 120 } 121 } 122 } 123 | Popular Tags |