snmp4j入門例子_第1頁
snmp4j入門例子_第2頁
snmp4j入門例子_第3頁
snmp4j入門例子_第4頁
snmp4j入門例子_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、、SNMP簡介SNMP指的是簡單網(wǎng)絡管理協(xié)議。它屬于TCP/IP五層協(xié)議中的應用層協(xié)議。它提供了一種簡單和方便的模式來管理網(wǎng)絡中的各個元素。這里的元素就是各個被管理的對象,可以是因特網(wǎng)中的某個硬件,比如網(wǎng)卡,也可以是某些硬件和軟件的配置參數(shù)的集合。由于SNMP協(xié)議簡單可靠,受到了眾多廠商的歡迎,成為了目前最為廣泛的網(wǎng)管協(xié)議。SNMP協(xié)議主要由兩大部分構成:SNMP管理站和SNMP代理。SNMP管理站是一個中心節(jié)點,負責收集維護各個SNMP元素的信息,并對這些信息進行處理,最后反饋給網(wǎng)絡管理員;而SNMP代理是運行在各個被管理的網(wǎng)絡節(jié)點之上,負責統(tǒng)計該節(jié)點的各項信息,并且負責與SNMP管理站交互

2、,接收并執(zhí)行管理站的命令,上傳各種本地的網(wǎng)絡信息。SNMP管理站和SNMP代理之間是松散耦合。他們之間的通信是通過UDP協(xié)議完成的。一般情況下,SNMP管理站通過UDP協(xié)議向SNMP代理發(fā)送各種命令,當SNMP代理收到命令后,返回SNMP管理站需要的參數(shù)。但是當SNMP代理檢測到網(wǎng)絡元素異常的時候,也可以主動向SNMP管理站發(fā)送消息,通告當前異常狀況。SNMP協(xié)議于1988年發(fā)布。到目前一共經(jīng)歷了VI,V2,V3三個版本。其中VI已經(jīng)被廢棄,而V2c雖然沒有能夠成為正式標準,但是已經(jīng)被很多廠家所接受,V3目前是因特網(wǎng)的正式標準。與V1相比,V2,V3更能適應大規(guī)模的網(wǎng)絡管理,而且在安全方面有了

3、較大的改進。二SNMP4J詳細介紹2.1重要的類和接口Snmp類:該類是SNMP4J中最為核心的類。負責SNMP報文的接受和發(fā)送。PDU類和ScopedPDU類:該類是SNMP報文單元的抽象,其中PDU類適用于SNMPvl和SNMPv2c。ScopedPDU類繼承于PDU類,適用于SNMPv3。Target接口和UserTarget類:對應于SNMP代理的地址信息,包括IP地址和端口號(161)其中Target接口適用于SNMPvl和SNMPv2c。UserTarget類實現(xiàn)了Target接口,適用于SNMPv3。TransportMapping接口:該接口代表了SNMP4J所使用的傳輸層協(xié)議

4、。這也是SNMP4J一大特色的地方。按照RFC的規(guī)定,SNMP是只使用UDP作為傳輸層協(xié)議的。而SNMP4J支持管理端和代理端使用UDP或者TCP進行傳輸。該接口有兩個子接口。2.2兩種消息發(fā)送模式SNMP4J支持兩種消息發(fā)送模式:同步發(fā)送模式和異步發(fā)送模式。其中同步發(fā)送模式也稱阻塞模式。當管理端發(fā)送出一條消息之后,線程會被阻塞,直到收到對方的回應或者時間超時。同步發(fā)送模式編程較為簡單,但是不適用于發(fā)送廣播消息。異步發(fā)送模式也稱非阻塞模式。當程序發(fā)送一條消息之后,線程將會繼續(xù)執(zhí)行,當收到消息的回應的時候,程序會對消息作出相應的處理。要實現(xiàn)異步發(fā)送模式,需要實例化一個實現(xiàn)了ResponseLis

5、tener接口的類的對象。ResponseListener接口中有一個名為onResponse的函數(shù)。這是一個回調(diào)函數(shù),當程序收到響應的時候,會自動調(diào)用該函數(shù)。由該函數(shù)完成對響應的處理。2.3實現(xiàn)管理端的總體步驟該部分說明了利用SNMP4J編寫SNMP管理端的大致過程,讀者在閱讀之后會對SNMP4J有一個宏觀上的認識。在附錄部分,作者給出了一個用SNMP4J開發(fā)管理站的樣例程序,如果有進一步的需要,請參考附錄部分。2.3.1初始化明確SNMP在傳輸層所使用的協(xié)議一般情況下,我們都使用使用UDP協(xié)議作為SNMP的傳輸層協(xié)議,所以我們需要實例化的是一個DefaultUdpTransportMapp

6、ing接口對象;實例化一個snmp對象在此過程中,我們需要將1中實例化的DefaultUdpTransportMapping接口的對象作為參數(shù),穿snmp類的構造函數(shù)中。另外,如果實現(xiàn)的SNMPv3協(xié)議,我們還需要設置安全機制,添加安全用監(jiān)聽snmp消息在此,我們可以調(diào)用剛剛實例化的DefaultUdpTransportMapping的接口對象的listen方法,讓程序監(jiān)聽snmp消息;2.3.2構造發(fā)送目標如果實現(xiàn)的是SNMPv3程序,則需要實例化一個UserTarget對象,如果實現(xiàn)的是SNMPv2c或者說SNMPvl,則需要實例化一個CommunityTarget對象。之后,我們還需要對

7、實例化的對象做一些設置。如果是CommunityTarget的對象,則需要設置版本,重傳時間和等待時延。如果是UserTarget對象,我們不僅需要設置版本、重傳時間、等待時延,還需要設置安全級別和安全名稱。2.3.3構造發(fā)送報文如果發(fā)送的是SNMPv3的報文,我們則需要實例化一個ScopedPDU類的對象,否則我們需要實例化一個PDU類的對象。之后,我們還需要生成一個OID對象,其中包含了我們所需要獲取的SNMP對象在MIB庫中的ID。然后我們需要將OID和之前生成的PDU對象或者是ScopedPDU對象綁定,并且設置PDU的報文類型(五種SNMP報文類型之一)。2.3.4構造響應監(jiān)聽對象(

8、異步模式)當使用異步模式的時候,我們需要實例化一個實現(xiàn)了ResponseListener的對象,作為響應消息的監(jiān)聽對象。在構造該對象的過程中,我們需要重寫ResponseListener的OnResponse函數(shù),該函數(shù)是一個回調(diào)函數(shù),用來處理程序收到響應后的一些操作。2.3.5發(fā)送消息當所有上述操作都設置完畢之后,就可以發(fā)送消息了。同步模式和異步模式發(fā)送消息調(diào)用的函數(shù)名字均為send,但是兩個函數(shù)所需參數(shù)不一樣。同步模式的參數(shù)僅為4.3.2和4.3.3中構造的目標對象和報文對象,而異步模式還需要4.3.4中構造的監(jiān)聽對象。同步模式發(fā)送消息后便等待響應的到達,到達之后會返回一個Response

9、Event對象,該對象中包含了響應的相應信息。異步模式發(fā)送消息之后便會繼續(xù)執(zhí)行,當收到響應消息時便會調(diào)用監(jiān)聽對象的OnResponse函數(shù)。該函數(shù)中的語句便是我們對響應的處理三、例程importjava.io.IOException;importorg.snmp4j.*;importorg.snmp4j.event.ResponseEvent;importorg.snmp4j.event.ResponseListener;importorg.snmp4j.mp.MPv3;importorg.snmp4j.mp.SnmpConstants;importorg.snmp4j.security.*;

10、importorg.snmp4j.smi.Address;importorg.snmp4j.smi.GenericAddress;importorg.snmp4j.smi.OID;importorg.snmp4j.smi.OctetString;importorg.snmp4j.smi.UdpAddress;importorg.snmp4j.smi.VariableBinding;importorg.snmp4j.transport.DefaultUdpTransportMapping;publicclasssnmp_managerprivateSnmpsnmp=null;privateStr

11、ingversion=null;/*paramversion*/publicsnmp_manager(Stringversion)trythis.version=version;TransportMappingtransport=newDefaultUdpTransportMapping();snmp=newSnmp(transport);if(version.equals(3)/設置安全模式USMusm=newUSM(SecurityProtocols.getInstance(),newOctetString(MPv3.createLocalEngineID(),0);SecurityMod

12、els.getInstance().addSecurityModel(usm);/開始監(jiān)聽消息transport.listen();catch(IOExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();/*paramsyn是否是同步模式*parambro是否是廣播*parampdu要發(fā)送的報文*paramaddr目標地址*throwsIOException*/publicvoidsendMessage(Booleansyn,finalBooleanbro,PDUpdu,Stringaddr)throwsIOException/生

13、成目標地址對象AddresstargetAddress=GenericAddress.parse(addr);Targettarget=null;if(version.equals(3)/添加用戶snmp.getUSM().addUser(newOctetString(MD5DES),newUsmUser(newOctetString(MD5DES),AuthMD5.ID,newOctetString(MD5DESUserAuthPassword),PrivDES.ID,newOctetString(MD5DESUserPrivPassword);target=newUserTarget();

14、/設置安全級別(UserTarget)target).setSecurityLevel(SecurityLevel.AUTH_PRIV);(UserTarget)target).setSecurityName(newOctetString(MD5DES);target.setVersion(SnmpConstants.version3);elsetarget=newCommunityTarget();if(version.equals(1)target.setVersion(SnmpConstants.version1);(CommunityTarget)target).setCommunit

15、y(newOctetString(public);elsetarget.setVersion(SnmpConstants.version2c);(CommunityTarget)target).setCommunity(newOctetString(public);/目標對象相關設置target.setAddress(targetAddress);target.setRetries(5);target.setTimeout(1000);if(syn.equals(true)/發(fā)送報文并且接受響應ResponseEventresponse=snmp.send(pdu,target);/處理響應S

16、ystem.out.println(Synchronizemessagefrom+response.getPeerAddress()+/nrequest:+response.getRequest()+/nresponse:+response.getResponse();else/設置監(jiān)聽對象ResponseListenerlistener=newResponseListener()OverridepublicvoidonResponse(ResponseEventevent)/TODOAuto-generatedmethodstubif(bro.equals(false)(Snmp)event

17、.getSource().cancel(event.getRequest(),this);/處理響應PDUrequest=event.getRequest();PDUresponse=event.getResponse();System.out.println(Asynchronisemessagefrom+event.getPeerAddress()+/nrequest:+request+/nresponse:+response);/發(fā)送報文snmp.send(pdu,target,null,listener);publicstaticvoidmain(Stringargs)snmp_managermanager=newsnmp_manager(2c);/構造報文PDUpdu=newPDU();/PDUpdu=newScopedPDU();/設置要獲取的對象IDOID

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論