網絡管理-第8章課件_第1頁
網絡管理-第8章課件_第2頁
網絡管理-第8章課件_第3頁
網絡管理-第8章課件_第4頁
網絡管理-第8章課件_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章網絡管理開發(fā)Page1

本章將在前文詳細分析典型網絡管理系統功能和使用的基礎上,具體介紹Windows系統下網絡管理軟件開發(fā)的流程和方法。28.1網絡管理開發(fā)概述

通用的網絡管理應用程序通常稱做網絡管理平臺,它提供一組通用的網絡管理功能,也提供實現專用管理程序的工具,支持基本的管理功能。3

無論使用什么管理平臺,設計網絡管理應用程序都要首先確定以下內容:確定被管理節(jié)點的網絡地址(IP地址,IPX地址,DNS主機名);確定遠程目標的端口號(UDP161,專用端口號大于1024);確定接收陷入的端口號(UDP162,專用端口號大于1024);4

確定團體名(通常為public,如果使用兩個團體名,則read-only團體名為public,read-write團體名為private);確定響應定時器等待時間間隔;確定重復請求次數;確定輪詢時間間隔。58.1.1網絡管理應用程序的基本功能

網絡管理應用程序的基本功能是輔助管理員監(jiān)視網絡,發(fā)現活動的網絡設備,排除網絡故障,具體包括以下內容:網絡發(fā)現管理站輪詢MIB編譯器和數據庫MIB瀏覽器MIB搜索器陷入信息記錄

6

網絡發(fā)現

網絡發(fā)現通常包含兩部分內容。首先是探測活動站點,這可以通過向子網中的所有站點發(fā)送ICMP報文,把收到應答的站點標記為活動站點;或者讀取ARP緩沖區(qū)以及本地路由器和管理主機的接口表,發(fā)現可連接的設備,然后有選擇的發(fā)送ICMP報文。其次是標識SNMP管理站點,這可以通過向活動站點發(fā)送GetRequest報文,獲取有關信息。

根據收集的信息可以建立網絡發(fā)現數據庫,視其復雜性可用Text文件、Windows注冊表或實際的數據庫引擎(如MicrosoftACCESS等)實現。最后還要建立網絡拓撲映像,把發(fā)現的各個子網拓撲結構用圖形表示出來,也可用多個窗口分別顯示。7

管理站輪詢。

定期輪詢活動站點,可以用ICMP報文檢查站點活動狀態(tài),或者利用SNMP收集管理信息。8

MIB編譯器和數據庫

MIB模塊以ASN.1編寫,以ASCⅡ文件存儲,經編譯后轉換成代理可利用的格式。MIB數據庫是MIB模塊的集合。簡單的應用可以不使用MIB數據庫,這種情況下管理員發(fā)送請求時要手工輸入變量的OID、數據類型和數據值,同時要記住常用的OID,解釋需要的MIB模塊。復雜的應用通過MIB數據庫把對象描述符變換成OID(數字形式的子標識符),確定存儲的數據類型和訪問方式。9

MIB瀏覽器

該程序的功能是用搜索目錄樹的方法,定位和顯示MIB中的被管理對象的值,可以通過向某個MIB對象發(fā)送GetNextRequest請求,接收和顯示變量綁定表中的內容。10

MIB搜索器該程序是比較簡單的瀏覽器,用于發(fā)現被管理對象的MIB。在SNMP中沒有標準的方法使得被管理節(jié)點公布其名字、版本號、MIB模塊的內容及其支持的對象。MIB搜索器可以動態(tài)的發(fā)現各個站點中可以訪問的對象,但只能檢索存儲在變量中的MIB信息,其他MIB模塊數據,如對象標識符、訪問模式等不能檢索。因而MIB搜索器不能替代經過編譯的MIB模塊。11

陷入信息記錄

管理應用接收到一個陷入報文后,可以在拓撲結構圖上顯示一個圖標,或彈出一個消息窗口,甚至發(fā)出聲音告警。同時把陷入數據及其時間和地址寫入陷入記錄文件。128.1.2SNMP編程任務

SNMP是網絡管理程序和SNMP代理之間的通信協議,主要用來管理網絡設備,到目前為止幾乎所有的網絡產品都要為其提供支持,以方便管理員的管理和軟件開發(fā)人員的開發(fā)。

SNMP編程主要包括兩大部分:網絡管理程序的開發(fā)和SNMP代理軟件的開發(fā)。網絡管理程序主要運行在管理端,代理軟件則運行在特定的網絡被管設備上。131.SNMP編程內容 從客戶機/服務器的角度分析,網絡管理程序和SNMP代理既是客戶機,同時又充當服務器的角色。作為服務器,網絡管理程序監(jiān)聽UDP端口162,接收SNMP代理發(fā)送的陷阱消息;SNMP代理監(jiān)聽UDP端口161,接收網絡管理程序發(fā)送的各種查詢請求。作為客戶機,網絡管理程序可以隨時向SNMP代理發(fā)送查詢請求,而SNMP代理則可以隨時向網絡管理程序發(fā)送陷阱信息。14

開發(fā)基于SNMP的網絡管理程序,和開發(fā)其他基于客戶機/服務器模式的網絡應用程序沒有本質的區(qū)別。如果程序不準備處理陷阱信息,那么網絡管理程序實際上就是一個普通的客戶端程序。開發(fā)主要包括以下內容:構造正確的PDU,組成SNMP報文;對發(fā)送(接收)的SNMP報文進行BER編碼(解碼);接收并處理陷阱信息。BER編碼處理后的SNMP報文,使用UDP進行封裝,并設置服務器端(SNMP代理)IP地址和端口號161。接收到返回的應答包后,再對SNMP報文進行解碼處理。15

SNMPv1的報文由SNMP版本號、共同體字符串和一個附加的PDU結構組成。BER編碼的對象是整個報文,而不僅僅是PDU部分。UDP報文的數據部分,就是一個經過BER編碼處理的完整SNMP報文。圖8-1所示是網絡管理程序發(fā)送的SNMP請求報文使用的UDP報文格式。162.SNMP變量

SNMP變量是運行期間SNMP代理維護的被管理對象實例。網絡管理程序通過查詢SNMP變量的值,獲知被管理設備的網絡運行狀態(tài);通過設置SNMP變量值,達到遠程配置網絡參數的目的。無論是查詢還是設置操作,都離不開SNMP變量。17

表產生的SNMP變量可以看作一個多維動態(tài)數組,如表中有n個列對象,就產生一個n維動態(tài)數組。變量標識符就是列對象實例標識符。

SNMP變量對網絡管理程序的開發(fā)十分重要,管理過程的實質是程序對于SNMP變量的操作。SNMP代理中有些SNMP變量是由代理所實現的MIB所決定的。MIB中的標量對象只有一個實例,因此一個標量對象在代理中只產生一個SNMP變量。列對象的情況相對復雜。雖然列對象可以有多個對象實例,但運行期間,同一個表中列對象的實例數是相等的。由MIB中表產生的SNMP變量數要根據實際情況而定。183.MIB表的操作

MIB表結構中的列對象往往包含著一組相關的網絡信息,程序中經常需要對表進行操作,有時是獲取一個列對象的所有實例,有時是獲取幾個列對象的所有實例。根據表的結構以及SNMPGetNext操作特點,使用GetNext完成表的檢索。

只要產生的應答PDU不超過大小限制,一次操作中可以綁定多個SNMP變量,即一次取回多個列對象實例。因此,在對表進行檢索操作時,有兩種選擇,可以在一次SNMPGetNext操作中取回所有相關列對象的實例,即一次取回一行中的所有實例;或者每次取回列對象的一個實例,循環(huán)操作直至取回所有相關的SNMP變量。198.1.3基于SNMP的網絡管理應用開發(fā)方法

在Windows下實現SNMP的編程,可以采用Winsock接口,在161和162端口通過UDP傳送信息。

WinSNMPAPI函數實現了基本的SNMP功能,使用SNMP消息完成SNMP實體間的通信。使用如UCDSNMP、PowerT、SNMP++等的支持SNMP功能的第三方軟件包能夠大大簡化Windows環(huán)境下的SNMP編程。208.2

WindowsSNMP服務

基于Windows的SNMP服務采用由管理系統、代理和其他相關組件組成的分布式體系結構,Windows計算機既可以是SNMP管理者,也可以是安裝SNMP代理的被管對象。當Windows計算機發(fā)生重大事件,SNMP服務就會把狀態(tài)信息發(fā)送給一個或多個管理主機。218.2.1WindowsSNMP服務基本概念

Windows32系統支持并發(fā)的系統服務,一個Windows32系統服務可以在后臺運行,它的開始和停止無須系統重啟動。服務是一種特殊的Windows

32應用軟件,它通過Windows

32API與WindowsNT的服務控制管理器(SCM)連接,一般運行在后臺,作用是監(jiān)視硬件設備和其他系統進程,提供訪問外圍設備和操作系統輔助功能的能力。

系統服務在系統啟動時或用戶登錄時自動開始運行,當用戶退出或系統關機時停止運行。SNMP就是運行于Windows32系統之上的一個服務軟件,支持SNMP管理站和代理功能,包括發(fā)送和接收陷入的能力。22

Windows2000系統的SNMP服務包括兩個應用程序。一個是SNMP代理服務程序Snmp.exe,另一個是SNMP陷入服務程序Snmptrap.exe。

Snmp.exe接收SNMP請求報文,根據要求發(fā)送響應報文,能對SNMP報文進行語法分析,ASN.1表示和BER編碼/譯碼,也能發(fā)送陷入報文,并處理與WinSockAPI的接口。

Snmptrap.exe監(jiān)聽發(fā)送給NT主機的陷入報文,然后把其中的數據傳送給SNMP管理API。Windows95/98中沒有陷入處理程序。WindowsServer2003中SNMP的內部體系結構由管理端函數庫和代理端函數庫兩大部分實現,其中部分函數功能出現交迭,既用于管理端,也用于代理端。圖8-3所示為WindowsServer2003SNMP服務體系結構。2324

Windows的SNMP代理服務是可擴展的,即允許動態(tài)地加入或減少MIB信息。這意味著程序員不必修改和重新編譯代理程序,只需增加或刪除一個能處理指定信息的子代理就可以了。Microsoft把這種子代理叫做擴展代理,它處理私有的MIB對象和特定的陷入條件。當SNMP代理服務接收到一個請求報文時,它就把變量綁定表的有關內容送給對應的擴展代理,擴展代理根據SNMP的規(guī)劃對其私有的變量進行處理,形成響應信息。

編寫擴展代理程序是開發(fā)網絡管理系統的程序員的責任,程序員可根據需要隨時增加或刪除系統的擴展代理程序。SNMP代理服務和擴展代理以及陷入服務與Windows32操作系統的關系如圖8-4所示。

2526

WinSNMPAPI是Microsoft為SNMP開發(fā)的應用程序接口,是一組用于構造SNMP服務和擴展代理和SNMP管理系統的庫函數。圖8-5所示為SNMP代理與SNMPAPI交互作用的詳細過程。

27

SNMP報文通過UDP/IP服務經WinSockAPI傳送到SNMP代理。

SNMP代理調用SNMPAPI對報文譯碼和認證檢查,然后把變量信息傳送給有關的擴展代理,經擴展代理處理形成響應信息后又返回給SNMP代理,再由SNMP代理裝配成GetResponse報文,交給WinSockAPI回送給發(fā)出請求的管理站。如果請求的MIB對象沒有得到任何擴展代理的支持,則返回noSuchName錯誤。

陷入服務監(jiān)視從WinSockAPI傳來的陷入報文,然后把陷入數據通過命名管道傳送給SNMP的管理API。管理API是Microsoft為開發(fā)SNMP管理應用提供的動態(tài)鏈接庫,是SNMPAPI的一部分。圖8-6所示為SNMP陷入、管理應用、管理API及WinSockAPI間的關系。2829

管理應用程序從管理API接收數據,向管理API發(fā)送管理信息,并通過管理API與WinSock通信,實現網絡管理功能。

管理者向代理請求的信息包含在MIB中。MIB是一組可管理的對象,這些對象代表了與網絡設備有關的各種類型的信息。

WindowsSNMP服務支持InternetMIB-2、LANManagerMIB-2、DHCPMIB、HTTPMIB等。

308.2.2

WindowsSNMP服務的安裝配置測試

WindowsSNMP服務的安裝方法同其他服務的安裝方法類似,但安裝之前必須首先安裝TCP/IP。在Windows2000/XP/2003中安裝和配置SNMP服務的方法一致。311.安裝SNMP服務

StartControl

PanelAddOrRemoveProgramsAdd/RemoveWindowsComponentsWindows組件向導ManagementAndMonitoringTools,但不要選中該復選框,僅僅選擇該入口即可。單擊“Details(詳細)”按鈕打開窗口,然后選中在“SimpleNetworkManagementProtocol(簡單網絡管理協議)”旁邊的復選框。最后單擊“OK(確定)”按鈕返回“Windows組件向導”窗口。單擊“Next(下一步)”按鈕,如果出現了相關提示,則插入Windows的安裝光盤。322.配置SNMP服務

完成了上述步驟之后,打開服務控制面板,并找到SNMP服務,然后使用正確的通訊字符串來配置SNMP。雙擊該服務,就可以打開服務的屬性頁面,如圖8-9所示,用戶可以在“SNMPService的屬性”對話框中完成服務設置,具體配置情況不再贅述。注意在“安全”選項卡中可設置訪問團體號及主機地址,通常情況下使用系統默認的配置即可(默認情況下團體名為public)。3334353.測試SNMP服務

SNMPUTIL(Snmptuil.exe)是微軟Windows2000資源工具中的一個實用程序,也是網絡管理系統中的管理進程,可用于測試SNMP服務,也可以測試用戶開發(fā)的擴展代理。SNMPUTIL是MS-DOS程序,是基于微軟公司的管理API編寫的,但在Windows98系統中沒有管理API,所以該程序只能運行在WindowsNT/2000/XP/2003及更高版本的操作系統中,具體使用語法如下。36

usage:snmputil[get|getnext|walk]agentcommunityoid[oid...]

snmputiltrap

其中agent表示代理進程的IP地址,community表示團體名,oid表示MIB對象ID。使用SNMPUTIL發(fā)送GetRequest或GetNextRequest報文,可以遍歷整個MIB子樹,可以完成查看本地計算機系統信息、連續(xù)開機時間、聯系人、用戶列表、運行的進程等功能,實現對SNMP服務的測試。37

SNMPUTIL還有一個trap的參數,主要用來陷阱捕捉,它可以接受代理進程上主動發(fā)來的信息。如果在命令行下面輸入snmputiltrap后按“Enter”鍵,然后用錯誤的團體名來訪問代理進程,這時候就能收到代理進程主動發(fā)回的報告。

使用SNMPUTIL可以實現對SNMP基本服務的測試,但由于Snmptuil.exe只是一個簡單的工具,沒有包含Set命令,因此不能實現設置操作。此外,在Win2000/XP安裝光盤中附帶了一個圖形界面的測試程序Snmputilg.exe,用戶可以啟動光盤中/support/tools/setup.exe安裝此測試程序。該程序使用方法與Snmputil.exe類似,具體不再贅述。388.3Windows網絡管理應用程序開發(fā)

在Windows系統中開發(fā)網絡管理應用程序需要使用系統提供的API函數,主要包括4部分,即擴展代理API、管理API、使用程序API和WinSNMPAPI。編寫擴展代理和SNMP管理應用程序都要使用這些庫函數。398.3.1WindowsSNMP應用程序接口1.SNMP擴展代理API函數

SNMP擴展代理API函數定義SNMP服務和第三方SNMP擴展代理DLL間的接口。應用程序使用這些函數來解析由引入的SNMPPDU指定的變量綁定。擴展代理AP共包括6個API函數:SnmpExtensionClose

SnmpExtensionInit

SnmpExtensionInitEx

SnmpExtensionQuery

SnmpExtensionQueryEx

SnmpExtensionTrap

402.SNMP管理API函數

SNMP管理API函數定義第三方SNMP管理端應用程序與管理函數動態(tài)鏈接庫MGMTAPI.dll間的接口。此DLL與SNMP陷入服務(Snmptrap.exe)一起工作,并能與一個或多個第三方管理端應用程序相結合。第三方管理端應用程序可以調用這些管理API函數實現發(fā)送SNMP請求報文,接收響應等管理操作。SNNP管理API由7個函數組成。SnmpMgrClose

SnmpMgrGetTrap

SnmpMgrOidToStr

SnmpMgrOpen

SnmpMgrRequest

SnmpMgrStrToOid

SnmpMgrTrapListen

413.SNMP實用API函數

SNMP實用API函數簡化SNMP數據結構的操作并提供在SNMP應用程序開發(fā)過程非常有用的函數集。4.WinSNMPAPI函數

WinSNMPAPI為在Windows下開發(fā)基于SNMP的網絡管程序提供解決方案,為SNMP網管開發(fā)者提供了必須遵循的開放式單一接口規(guī)范,定義了過程調用、數據類型、數據結構和相關的語法。42WinSNMPAPI具有以下特點:為基于SNMP開發(fā)網絡管理應用程序提供接口;支持SNMPv1和SNMPv2C;除支持SNMP管理端功能外,WinSNMPAPI2.0還支持SNMP代理功能;支持32位應用程序和多線程;適應于Windows2000及后續(xù)操作系統;比SNMP管理API提供更多功能的函數。

WinSNMPAPI以函數的形式封裝了SNMP的各部分,且針對SNMP是使用UDP的特點而設置了消息重傳和超時機制等?;赪inSNMP的應用程序必須通過WSNMP32.DLL訪問WinSNMPAPI函數。WinSNMPAPI提供了7大類,約50多個API函數。438.3.2

WinSNMP編程概念1.SNMP消息與異步模式

Win32編程模式的一個很大特點就是消息驅動。WinSNMP采用了異步消息驅動模式,主要基于兩個原因:異步消息驅動模式適合于面向對象理論、SNMP分布式管理模型以及Windows編程、運行環(huán)境。

SNMP在管理站和代理間基于數據報傳送數據,沒有在遠程實體之間建立實際通道(虛電路)。44

消息驅動程序必須響應各種重要事件,有些則完全依賴于異步關系。、WinSNMPAPI中幾乎所有函數都含有異步因素,有些則是完全異步的。有3個非常重要的異步函數:

SnmpSendMsg

SnmpRecvMsg

SnmpRegiste

WinSNMP的整個編程模式就是基于異步的。

簡單網絡管理協議使用消息來通信,并在遠程SNMP實體間交換信息。SNMP消息包含協議數據單元及相關RFC定義的附加消息頭元素。PDU是包含SNMP數據成分(或域)的數據包。SNMP消息的格式對SNMPv1和SNMPv2都相同。但是,SNMPv2支持更多的PDU類型。452.WinSNMP支持級別

WinSNMP實現提供SNMP通信支持的多個級別:

Level0:只支持消息編碼與解碼,不支持SnmpSendMsg

SnmpRecvMsg

SnmpRegister。

Level1:支持0級通信和在SNMPv1框架下與SNMP代理實體相互操作。

Level2:支持1級通信和在SNMPv2C框架下與SNMP代理實體相互操作。

Level3:支持2級通信和與其他SNMPv2管理站通信。46

SNMP支持SNMPv1與SNMPv2的共存,所以WinSNMP提供對兩個版本協議的支持。

SnmpStartup函數能夠返回當前WinSNMP實現支持的SNMP通信的最大級別。如果WinSNMP管理應用程序使用此實現只是SNMP消息編碼和解碼,則應用程序必須進行由實現執(zhí)行的需要轉換。473.協議數據單元(PDU)

一個PDU包括一個變量綁定列表,PDU的結構受限于WinSNMP服務。WinSNMP管理器應用程序用HSNMP_PDU類型句柄可以存取PDU。

WinSNMP管理器應用程序在它調用SnmpSendMsg函數或SnmpEncodeMsg函數以前必須產生一個PDU。

應用程序可以提取或修改PDU的數據元素,釋放為PDU分配的資源。為了執(zhí)行這些操作,管理器應用程序使用WinSNMPPDU函數。484.陷入從SNMPv1轉換到SNMPv2C

當WinSNMP實現從SNMPv1框架下的實體操作中收到陷入時,它把此陷入轉換到SNMPv2C格式。因此,當SnmpRecvMsg傳送陷入時它總是用SNMPv2C格式。RFC1908詳細說明從SNMPv1到SNMPv2C轉換陷入格式的規(guī)則。

WinSNMP管理器應用程序可以檢查變量綁定列表中的最后一個變量綁定入口來決定入口是否是從SNMPv1轉換到SNMPv2C格式的陷入。495.本地數據庫

WinSNMP服務本地數據庫存儲以下信息。50(1)網絡協議信息和版本號:依據該信息決定傳輸中使用的傳輸協議和SNMP版本。(2)實體和上下文轉換模式:依據該信息向用戶提供界面友好的SNMP實體和上下文。(3)重發(fā)策略:依據該信息決定是否進行重發(fā),并存儲每一個目的連接實體的超時期限和重發(fā)次數。6.重發(fā)策略

WinSNMP管理器應用程序可以用各種方式進行SNMP操作請求。應用程序可以給SNMP代理發(fā)送幾個請求但不等待應答,或發(fā)送單個的請求并等待應答。由于SNMP可以在多個傳輸協議上執(zhí)行,故傳送機制和可靠性會改變。50

當編寫WinSNMP管理器應用程序時,必須決定基于應用程序發(fā)布操作請求的方式和通信操作需要的可靠等級,然后,必須選擇重發(fā)策略并實現此重發(fā)政策。517.實體和上下文轉換模式

WinSNMP管理應用程序通過設定實體和上下文轉換模式可以指定實體和上下文參數的解釋和翻譯。WinSNMP實現保存此模式于數據庫中。8.WinSNMP數據管理概念

使用WinSNMP管理器API進行編程時,采用的主要數據管理概念包括:對象標識符

WinSNMP描述符資源句柄對象

C類型串分配WinSNMP內存對象。529.陷入和通知

WinSNMP管理器應用程序必須用SNMPAPI_ON調用SnmpRegister函數注冊接收陷入和通知。應用程序可以通過用SNMPAPI_OFF調用此函數卸載和使其不能進行陷入和通知。538.3.3

WinSNMP編程模式

WinSNMP程序主要由WinSNMP應用程序、WinSNMP會話、WinSNMP服務3部分組成。WinSNMP服務為應用程序提供以下服務。

實現管理實體間的管理通信。管理實體可以處于本地計算機,也可以是通過局域網、廣域網或者Internet連接。隱藏SNMP、ASN.1語法及BER編碼在傳輸過程中的具體細節(jié)。驗證接收到的SNMPPDU的正確性,并拒絕接收無效的PDU。依據相關RFC規(guī)定轉換SNMPv2PDU類型。為使SNMPv2能夠向下兼容SNMPv1,在發(fā)送SNMPv1陷入時,將該陷入轉換為SNMPv2陷入。應用程序重發(fā)策略服務。設定實體和上下文轉換模式。54

打開WinSNMP應用程序;打開一個或多個WinSNMP會話;注冊接收陷入或通知;產生一個或多個變量綁定列表結合到一個PDU中;提交一個或多個SNMP操作請求;檢取SNMP操作請求的應答;處理請求應答;關閉每一個WinSNMP會話;關閉WinSNMP應用程序。

WinSNMP一般編程任務包括管理對象標識符、釋放WinSNMP描述符、設定實體和上下文轉換模式、管理重發(fā)政策。使用WinSNMP開發(fā)網絡管理應用的基本編程步驟如下:55由于WinSNMPAPI按照SNMP封裝了各種操作,包括PDU、VarBindList以及協議操作的各項函數。在具體開發(fā)WinSNMP應用時,可以按照SNMP的描述調用WinSNMP相關函數,完成一次完整的SNMP。下面將具體介紹WinSNMP的一般編程模式,分為發(fā)送請求消息與接受響應消息兩部分來實現。561.WinSNMP發(fā)送請求消息

WinSNMP發(fā)送請求消息的過程可以分為4個部分,主要有:

WinSNMP的初始化協議數據單元的創(chuàng)建發(fā)送信息資源的釋放。57(1)WinSNMP的初始化

初始化的具體過程如下:

調用SnmpStartup函數啟動WinSNMP。調用SnmpOpen或SnmpCreateSession函數創(chuàng)建一個會話。調用SnmpSetTranslateMode設置傳輸模式。調用SnmpStrToEntity創(chuàng)建實體。調用SnmpSetRetransmitMode函數設置重傳模式。調用SnmpSetRetry函數設置重傳次數。調用SnmpSetTimeout函數設置超時時間。調用SnmpStrToContext創(chuàng)建上下文句柄。58(2)創(chuàng)建協議數據單元在創(chuàng)建PDU之前,必須先創(chuàng)建變量綁定表。調用SnmpStrToOid函數創(chuàng)建讀取對象的對象標識符。調用SnmpCreateVbl函數創(chuàng)建變量綁定表。調用SnmpSetVb函數往變量綁定表中添加變量綁定。59(3)發(fā)送信息

首先調用SnmpStrToContext和SnmpStrToEntity函數創(chuàng)建共同體字符串和代理實體,然后,調用SnmpSendMsg

函數發(fā)送信息。SnmpSendMsg(session,NULL,hAgent,hView,m_hpdu);60(4)釋放資源最后調用SnmpFreeVbl、SnmpFreePdu、SnmpFreeEntity、SnmpClose等函數釋放所有分配的資源。612.WinSNMP接收響應消息

SnmpCreateSession函數請求WinSNMP為WinSNMP管理應用程序打開一個會話,應用程序可以指定如何通告WinSNMP會話發(fā)來的消息和異步時間,實現WinSNMP異步消息驅動模式,函數原型為62HSNMP_SESSIONSnmpCreateSession(HWNDhWnd,

//通知窗口的句柄UINTwMsg,

//窗口通知消息SNMPAPI_CALLBACKpfnCallback,

//通知回調函數LPVOIDlpClientData

); //指向回調函數數據的指針63下面為WinSNMP接受響應消息的步驟。(1)調用SnmpRecvMsg函數接收數據。(2)調用SnmpGetPduData函數從PDU中析取出數據。(3)調用SnmpCountVbl獲得變量綁定列表中變量綁定的個數。(4)調用SnmpGetVb函數取得PDU變量綁定表中每個變量綁定的對象標識符及其對應的值。(5)調用SnmpOidToStr函數將Oid轉換為字符串,并將接收到的Oid與發(fā)送數據包的各OID做比較,以決定各自值的歸屬。648.4

SNMP++軟件包

SNMP++是HP公司用C++語言開發(fā)的一個開源類庫,可以在下載到最新的版本。本書中介紹的版本為V3.2.18。SNMP++軟件包充分利用了面向對象的編程技術,所涉及的數據結構全部封裝在相應的類中。底層操作細節(jié)完全透明,使用者只需設置好相應參數,采用調用對象成員的方法,就可完成SNMP操作。658.4.1

SNMP++簡介1.SNMP++組成文件(1)*.cpp文件。(2)

*.h文件。2.SNMP++特點(1)內存管理。(2)可移植性強。(3)提供超時和重傳機制。(4)阻塞模式與非阻塞模式的網絡請求。(5)支持Trap的發(fā)送和接收。

663.編譯SNMP++軟件包由于下載得到是源文件,開發(fā)使用時可將文件加入到程序中,也可將SNMP++類編譯成鏈接庫,直接在程序中調用。下面將介紹在VC++6.0環(huán)境中如何將SNMP++軟件包編譯成靜態(tài)連接庫。

678.4.2

SNMP++軟件包中的類介紹如同MFC是對Win32API進行的再封裝一樣,Windows下的SNMP++是在WinSNMP的基礎上進行的二次封裝。圖8-11所示為SNMP++在程序開發(fā)環(huán)境中的層次

溫馨提示

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

評論

0/150

提交評論