技术开发 频道

简单SNMP管理程序VC++实例

【IT168技术文档】

  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 Settings\mmpire>net start snmp SNMP Service 服务正在启动 . SNMP Service 服务已经启动成功。 C:\Documents and Settings\mmpire>
  则已经安装有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中。
 
  可以看看它的介绍(几乎支持了所有现在的Windows版本),只要下载全部17个PSDK-FULL.*.cab及最后一个PSDK-FULL.exe,之后全部解压缩并安装到某个文件夹中即可。
 
  1. 找到示例代码
 
  进入platformsdk\Samples\NetDS\Snmp,可以看到三个文件夹:SnmpUtil,TestDll,Wsnmp以及一个Makefile。其中SnmpUtil与TestDll是基于NT平台的,略去不说,具体参看内附的readme。而Makefile是用来编译所有这三个文件里的模块的,对于XP平台前两个文件夹里的模块不能正确编译,所以也不看。进入Wsnmp文件夹,我们需要的示例代码就在这里。将五个文件全拷贝到D盘根目录。
 
  2. 编译示例代码
 
  打开VC命令行窗口,输入以下命令:
C:\Documents and Settings\mmpire>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_DEBUG\wsnm putil.exe WIN2000_DEBUG\wsnmputil.obj WIN2000_DEBUG\helper.obj user32.lib gdi32.lib snmpapi.lib wsnmp32.lib mgmtapi.lib oldnames.lib
  可以发现当前目录下出现一个子目录WIN2000_DEBUG,也可以用nmake删除:
D:\>nmake clean Microsoft (R) 程序维护实用工具 7.10.3077 版 版权所有 (C) Microsoft Corporation。保留所有权利。 if exist WIN2000_DEBUG/ rd /s /q WIN2000_DEBUG
  当然现在我们还需要它,根据其readme文件所述,这个示例代码是一个SNMP管理程序(SNMP Manager Application),展示了如何使用WinSNMP的API编写应用程序。它支持SNMP 1的Get,GetNext,Set操作,以及SNMP2的GetBulk操作。而扩展的Walk和Subtree操作则使用GetNext操作来实现。

0
相关文章