程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 簡單SNMP管理程序的VC++代碼實例實現

簡單SNMP管理程序的VC++代碼實例實現

編輯:vc教程

  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] 下一頁

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved