日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

利用SNMP4J实现Snmp Trap

發(fā)布時(shí)間:2025/4/5 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用SNMP4J实现Snmp Trap 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

下面是兩個(gè)用于發(fā)送和接收Trap報(bào)文信息的類:

  • 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; ??
  • ??
  • /** ?
  • ?*?本類用于監(jiān)聽(tīng)代理進(jìn)程的Trap信息 ?
  • ?*? ?
  • ?*?@author?zhanjia ?
  • ?* ?
  • ?*/??
  • public?class?MultiThreadedTrapReceiver?implements?CommandResponder?{ ??
  • ??
  • ????private?MultiThreadedMessageDispatcher?dispatcher; ??
  • ????private?Snmp?snmp?=?null; ??
  • ????private?Address?listenAddress; ??
  • ????private?ThreadPool?threadPool; ??
  • ??
  • ????public?MultiThreadedTrapReceiver()?{ ??
  • ????????//?BasicConfigurator.configure(); ??
  • ????} ??
  • ??
  • ????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"));?//?本地IP與監(jiān)聽(tīng)端口 ??
  • ????????TransportMapping?transport; ??
  • ????????//?對(duì)TCP與UDP協(xié)議進(jìn)行處理 ??
  • ????????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("開(kāi)始監(jiān)聽(tīng)Trap信息!"); ??
  • ????????}?catch?(Exception?ex)?{ ??
  • ????????????ex.printStackTrace(); ??
  • ????????} ??
  • ????} ??
  • ??
  • ????/** ?
  • ?????*?實(shí)現(xiàn)CommandResponder的processPdu方法,?用于處理傳入的請(qǐng)求、PDU等信息 ?
  • ?????*?當(dāng)接收到trap時(shí),會(huì)自動(dòng)進(jìn)入這個(gè)方法 ?
  • ?????*? ?
  • ?????*?@param?respEvnt ?
  • ?????*/??
  • ????public?void?processPdu(CommandResponderEvent?respEvnt)?{ ??
  • ????????//?解析Response ??
  • ????????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(); ??
  • ????} ??
  • ??
  • }??
  • 轉(zhuǎn)載于:https://blog.51cto.com/wangjingchao/914932

    總結(jié)

    以上是生活随笔為你收集整理的利用SNMP4J实现Snmp Trap的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。