生活随笔
收集整理的這篇文章主要介紹了
利用SNMP4J实现Snmp Trap
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
下面是兩個用于發送和接收Trap報文信息的類:
import?java.io.IOException; ??import?java.net.UnknownHostException; ??import?java.util.Vector; ????import?org.snmp4j.CommandResponder; ??import?org.snmp4j.CommandResponderEvent; ??import?org.snmp4j.MessageDispatcherImpl; ??import?org.snmp4j.Snmp; ??import?org.snmp4j.TransportMapping; ??import?org.snmp4j.mp.MPv1; ??import?org.snmp4j.mp.MPv2c; ??import?org.snmp4j.mp.MPv3; ??import?org.snmp4j.security.SecurityModels; ??import?org.snmp4j.security.SecurityProtocols; ??import?org.snmp4j.security.USM; ??import?org.snmp4j.smi.Address; ??import?org.snmp4j.smi.GenericAddress; ??import?org.snmp4j.smi.OctetString; ??import?org.snmp4j.smi.TcpAddress; ??import?org.snmp4j.smi.UdpAddress; ??import?org.snmp4j.smi.VariableBinding; ??import?org.snmp4j.transport.DefaultTcpTransportMapping; ??import?org.snmp4j.transport.DefaultUdpTransportMapping; ??import?org.snmp4j.util.MultiThreadedMessageDispatcher; ??import?org.snmp4j.util.ThreadPool; ???????????public?class?MultiThreadedTrapReceiver?implements?CommandResponder?{ ????????private?MultiThreadedMessageDispatcher?dispatcher; ??????private?Snmp?snmp?=?null; ??????private?Address?listenAddress; ??????private?ThreadPool?threadPool; ????????public?MultiThreadedTrapReceiver()?{ ????????????????} ????????private?void?init()?throws?UnknownHostException,?IOException?{ ??????????threadPool?=?ThreadPool.create("Trap",?2); ??????????dispatcher?=?new?MultiThreadedMessageDispatcher(threadPool, ??????????????????new?MessageDispatcherImpl()); ??????????listenAddress?=?GenericAddress.parse(System.getProperty( ??????????????????"snmp4j.listenAddress",?"udp:192.168.1.23/162"));???????????TransportMapping?transport; ????????????????????if?(listenAddress?instanceof?UdpAddress)?{ ??????????????transport?=?new?DefaultUdpTransportMapping( ??????????????????????(UdpAddress)?listenAddress); ??????????}?else?{ ??????????????transport?=?new?DefaultTcpTransportMapping( ??????????????????????(TcpAddress)?listenAddress); ??????????} ??????????snmp?=?new?Snmp(dispatcher,?transport); ??????????snmp.getMessageDispatcher().addMessageProcessingModel(new?MPv1()); ??????????snmp.getMessageDispatcher().addMessageProcessingModel(new?MPv2c()); ??????????snmp.getMessageDispatcher().addMessageProcessingModel(new?MPv3()); ??????????USM?usm?=?new?USM(SecurityProtocols.getInstance(),?new?OctetString(MPv3 ??????????????????.createLocalEngineID()),?0); ??????????SecurityModels.getInstance().addSecurityModel(usm); ??????????snmp.listen(); ??????} ???????? ??????public?void?run()?{ ??????????try?{ ??????????????init(); ??????????????snmp.addCommandResponder(this); ??????????????System.out.println("開始監聽Trap信息!"); ??????????}?catch?(Exception?ex)?{ ??????????????ex.printStackTrace(); ??????????} ??????} ???????????????????public?void?processPdu(CommandResponderEvent?respEvnt)?{ ????????????????????if?(respEvnt?!=?null?&&?respEvnt.getPDU()?!=?null)?{ ??????????????Vector<VariableBinding>?recVBs?=?respEvnt.getPDU().getVariableBindings(); ??????????????for?(int?i?=?0;?i?<?recVBs.size();?i++)?{ ??????????????????VariableBinding?recVB?=?recVBs.elementAt(i); ??????????????????System.out.println(recVB.getOid()?+?"?:?"?+?recVB.getVariable()); ??????????????} ??????????} ??????} ????????public?static?void?main(String[]?args)?{ ??????????MultiThreadedTrapReceiver?multithreadedtrapreceiver?=?new?MultiThreadedTrapReceiver(); ??????????multithreadedtrapreceiver.run(); ??????} ????}??
轉載于:https://blog.51cto.com/wangjingchao/914932
總結
以上是生活随笔為你收集整理的利用SNMP4J实现Snmp Trap的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。