一. 简介
工作中需要用到snmp的开发,于是马上利用各种资源,图书馆、图书城、因特网来急寻各种相关资料。snmp是简单网络管理协议的英文缩写,可以用来做网络管理。虽然这方面的资料不像c++等技术的资料那么泛滥(对于当今c++领域的出版状况,我情愿用泛滥而不想用丰富,跑题了,^_^),但是也不是乏善可陈。在csdn、google上搜索snmp。一下子就是一大堆。可是通通是(也许是我找得不够仔细)讲诸如snmp历史、snmp是什么、snmp与其他协议比较的优劣等等。毋庸置疑这样的文章对于像我这样从来没有听说过snmp的菜鸟是雪中炭。可是欢乐是短暂的,在了解完概念之后想去做一个类似hello world 一样的程序看看的时候。确怎么也无法找到一个可以方便运行的demo。
因此本文不再介绍snmp的概念,而是一步步教你怎么实现一个snmp程序的“hello world”。关于概念«snmp网络管理» william stallings 著。 中国电力出版 一书中有比较详细的介绍。可是让我受不了的是整本书几乎没有一句代码,也许这本书本身就不是给程序员看得,而且书的翻译也给人感觉就像路边的大排档。
二. 准备工作
我用的是 win2k professionnal + sp4 中文版,其他平台我实在是没有时间试验了,不过应该大同小异。
2.1 安装snmp agent
首先得保证自己机器上有snmp这个服务。安装的地方在“网络与拨号链接”窗体里面,可以通过在桌面上右键点击“网上邻居->属性”得到。
在网络与拨号链接窗体里面选择“高级->可选网络组件”菜单出现如下对话框:
在这个对话框中要保证“管理与监视工具”是被选择的,snmp的相关组件就在这个选项里面,而这个选择缺省windows安装是不安装的。如果你的机器还没有安装,那么选择上吧。
2.2 例子程序自己写一个例子程序似乎不可行,如果您已经能自己写一个snmp程序了,那么这篇文章就不要看了吧。我们直接用一个msdn上的例子吧。在vs6的msdn上有这么一个例子在...\samples\vc98\sdk\netds\snmp\snmputil下面。有意思的是这个例子的readme里面也没有讲运行的时候需要什么条件。可以理解的原因是这种程序不是用在本机pc上的,而是控制路由器等远程网络设备的。
虽然相信很多地方都可以找到这个程序,但是我还是把它的代码贴到这里,一来显得文章有了“份量”。二来为了给少数机器上没有装全msdn的人一个方便。三来这个代码我稍微做了一点修改,在出错的时候打印出了出错原因的字符描述,原来的例子给出的是整数的代码。让人不能直观地知道是什么原因。
这个例子是console程序,没有任何窗体、对话框。而且就一个.c文件,也很方便贴出来。另外还有一个makefile文件,这里就不列出了。
以下是snmputil.c文件:
... 下一页