SNMP(Simple Network Management Protocol)是基於TCP/IP的網絡管理協議,關於其工作原理網上很多,百度一下或者看看MSDN,今天在這裡記一下實現的步驟,本人工作環境是Windows XP professional SP2 + Microsoft Visual Studio .Net 2003,不保證其他平台與本人的步驟一致。
一、安裝SNMP服務
先查看系統中是否已經安裝有SNMP服務,開始->運行->cmd->回車
輸入命令“net start snmp”:
C:Documents and Settingsmmpire>net start snmp
SNMP Service 服務正在啟動 .
SNMP Service 服務已經啟動成功。
C:Documents and Settingsmmpire>
則已經安裝有SNMP,如果沒有安裝,則需先安裝SNMP服務:
1. 打開控制面板,雙擊[添加/刪除程序];
2. 在彈出的[添加/刪除程序]對話框的左窗格中,單擊 [添加/刪除 Windows 組件];
3. 在彈出的[Windows 組件向導]中雙擊 [管理和監視工具]。
4. 在彈出的[管理和監視工具] 對話框中,勾選[簡單網絡管理協議],單擊 [確定]。
5. 安裝協議時需要用到Windows XP SP2安裝盤,之後可能需要重啟,不過我的機器沒要求:P
再按前面的執行“net start snmp”命令啟動SNMP服務。
******************************************************************
二、代碼示例
這種編程一般都有套路,即需要遵循一定的格式,MS提供了SNMP編程的樣例代碼,這個樣例是一個最簡單的Snmp管理程序,用戶通過輸入Snmp命令來進行交互。我們可以從中查看WinSNMP的API的使用方法。所有樣例代碼都在Platform SDK中,可以在下面的地址下載到最新版的Platform SDK:
http://www.microsoft.com/downloads/details.ASPx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A&displaylang=en
可以看看它的介紹(哈,幾乎支持了所有現在的Windows版本),只要下載全部17個PSDK-FULL.*.cab及最後一個PSDK-FULL.exe,之後全部解壓縮並安裝到某個文件夾中即可。
1. 找到示例代碼
進入platformsdkSamplesNetDSSnmp,可以看到三個文件夾:SnmpUtil,TestDll,Wsnmp以及一個Makefile。其中SnmpUtil與TestDll是基於NT平台的,略去不說,具體參看內附的readme。而Makefile是用來編譯所有這三個文件裡的模塊的,對於XP平台前兩個文件夾裡的模塊不能正確編譯,所以也不看。進入Wsnmp文件夾,我們需要的示例代碼就在這裡。將五個文件全拷貝到D盤根目錄。
2. 編譯示例代碼
從以下路徑打開VC.Net命令行窗口:
開始->所有程序-> Visual Studio .NET 2003->Visual Studio .Net 2003 命令提示。
VC6下的路徑差不多,自己找一下。打開窗口之後輸入以下命令:
C:Documents and Settingsmmpire>d:
D:>nmake all
Microsoft (R) 程序維護實用工具 7.10.3077 版
版權所有 (C) Microsoft Corporation。保留所有權利。
if not exist "WIN2000_DEBUG/" mkdir WIN2000_DEBUG cl -Zi -Od -DDEBUG -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -D_X86_=1-DWIN32 -D_WIN32 -W3 -D_WINNT -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0500 –DWINV ER=0x0500 -D_MT -MTd /Fo"WIN2000_DEBUG" /Fd"WIN2000_DEBUG" wsnmputil.cpp wsnmputil.cpp cl -Zi -Od -DDEBUG -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -D_X86_=1 -DWIN32 -D_WIN32 -W3 -D_WINNT -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0500 –DWINV ER=0x0500 -D_MT -MTd /Fo"WIN2000_DEBUG" /Fd"WIN2000_DEBUG" helper.cpp helper.cpp link /DEBUG:full /DEBUGTYPE:cv /INCREMENTAL:NO /NOLOGO -subsystem:conso le,5.0 kernel32.lib ws2_32.lib mswsock.lib advapi32.lib -out:WIN2000_DEBUGwsnm putil.exe WIN2000_DEBUGwsnmputil.obj WIN2000_DEBUGhelper.obj user32.lib gdi32.lib snmpapi.lib wsnmp32.lib mgmtapi.lib oldnames.lib
D:>
可以發現當前目錄下出現一個子目錄WIN2000_DEBUG,也可以用nmake刪除:
D:>nmake clean
Microsoft (R) 程序維護實用工具 7.10.3077 版
版權所有 (C) Microsoft Corporation。保留所有權利。
if exist WIN2000_DEBUG/ rd /s /q WIN2000_DEBUG
D:>
當然現在我們還需要它,根據其readme文件所述,這個示例代碼是一個SNM
[1] [2] [3] 下一頁