注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > 32位开发 > C/C++ > 内容正文

简单SNMP管理程序的VC++代码实例实现

发布时间:2006-04-26 17:22:28 来源:blog 网友评论 0 条
  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中,可以在下面的地址下载到最新版的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. 找到示例代码

  进入platformsdk/Samples/NetDS/Snmp,可以看到三个文件夹: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 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

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文件所述,这个示例代码是一个SNMP管理程序(SNMP Manager Application),展示了如何使用WinSNMP的API编写应用程序。它支持SNMP 1的Get,GetNext,Set操作,以及SNMP2的GetBulk操作。而扩展的Walk和Subtree操作则使用GetNext操作来实现。

  3. 测试示例

  ①监听SNMP的端口

D:/>cd WIN2000_DEBUG

D:/WIN2000_DEBUG>wsnmputil trap

WSnmpUtil: listening for traps...


  ②另外打开一个VC.net命令行窗口

D:/WIN2000_DEBUG>net stop snmp

SNMP Service 服务正在停止..

SNMP Service 服务已成功停止。

D:/WIN2000_DEBUG>net start snmp

SNMP Service 服务正在启动 .

SNMP Service 服务已经启动成功。

D:/WIN2000_DEBUG>

  ③按照其readme里所描述的,在第一个监听窗口会出现以下信息

D:/WIN2000_DEBUG>wsnmputil trap

WSnmpUtil: listening for traps...

Agent : 127.0.0.1

OID :1.3.6.1.2.1.1.3.0

OID string: system.sysUpTime.0

TIMETICKS: 0

(注:…太长…略去)

  可惜在本人机器上,第一个窗口始终没有反应,似乎SNMP服务启动时会向局域网发送SNMP的数据包,但我不确定,以后解决了再写。

  ④再测试几个命令

D:/WIN2000_DEBUG>wsnmputil

usage: wsnmputil [-v1|-v2] [get|getnext|walk|getbulk|subtree] agent community [

non_repeaters max_repetitions] oid [oid ...]

Examples:

wsnmputil trap

wsnmputil -v1 get localhost public 1.3.6.1.2.1.1.1.0

wsnmputil -v1 getnext localhost public 1.3.6.1.2.1.1.1.0

wsnmputil -v1 subtree localhost public 1.3.6.1.2.1.1

wsnmputil -v1 set toaster public 1.3.6.1.4.1.12.2.5.0 2

wsnmputil -v2 walk localhost public 1

wsnmputil -v2 getbulk toaster public 1 2 1.3.6.1.2.1.1.2.0 1.3.6.1.2.1.4.2

2.1.2 1.3.6.1.2.1.4.22.1.4

D:/WIN2000_DEBUG>wsnmputil -v2 walk localhost public 1

(注:….非常多的结果…不过现在还不知道什么意思…汗)

D:/WIN2000_DEBUG>wsnmputil -v1 get localhost public 1

OID :1.3.6.1.2.1.1

system

NULL – NULL

D:/WIN2000_DEBUG>wsnmputil -v1 getnext localhost public 1.3.6.1.2.1.1.1.0

(注: 1.3.6.1.2.1.1.1.0是在OidView里看到的,貌似是本人agent的地址)

OID :1.3.6.1.2.1.1.2.0

system.sysObjectID.0

OBJECT IDENTIFIER - .1.3.6.1.4.1.311.1.1.3.1.1
******************************************************************
关于 简单 SNMP 管理程序 VC++ 代码 实例实现 的新闻
  • 只需简单操作 XP中实现文件名批量修改
  • 免费空间广告万能消除代码
  • Windows中隐藏个人隐私 我用代码搞定
  • 八大要领 做网站就这么简单
  • 善用热键 让KMPlayer播放变得超级简单
【评论】【收藏本文】【打印】【关闭】
上一篇文章:浅议C++ 中的垃圾回收方法
下一篇文章:保持C/C++程序代码的可伸缩性
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
全站资源
  • 微软官方入门教程19:轻松掌握Vista系统的快
  • 微软2008大冲击,预借Vista SP1力促Vista市
  • 在收件箱中获得 Windows Vista 的最新更新
  • 微软官方Vista入门教程全集19篇(Vista学院
  • Windows Vista 的成功将势不可挡
  • 快快抛弃Vista,拥抱XP SP3!你觉得呢?
  • 浅谈Vista系统关闭虚拟内存与使用内存盘加速
  • 嘿嘿,按下键盘上面的三个键,马上让你的Vi
  • Windows Vista的盗版率只有Windows XP的一半
  • 3DMark和PCMark Vantage新版将只支持Vista系
阅读排行
  • Borland 发布C++ Builder 2006 RAD 环境
  • C/C++程序员应聘常见面试题深入剖析
  • Visual C++常用数据类型转换详解
  • C++中的 static 关键字
  • 利用VC++实现局域网实时视频传输
  • 浅谈C/C++内存泄漏及其检测工具
  • 英国投票否决C++/CLI 微软强攻ISO标准受挫
  • VC++下用MSComm控件实现串口通讯
  • 伪随机数生成及在VC++中的实现
  • VC++编程实现对波形数据的频谱分析
最新技术文档
  • C++中用赋值形式op=取代单独形式op
  • C++启蒙之用C++制作程序
  • C++启蒙之C++中的类
  • 解析C++/CLI之头文件、内联函数与数组
  • C++启蒙之控制结构
  • C++启蒙之注释符号
  • 了解C++异常处理的系统开支
  • C++语言学习之从结构到类
  • C++中理解“传递参数”和异常之间的差异
  • C++中禁止异常信息传递到析构函数外
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载