SNMP的Client和Server怎么做?

fwbmail 2005-11-25 09:13:58
我现在的项目需要做SNMP,是需要我来写还是系统配置,我也不是很清楚。
项目要求:使用SNMP来检查每台设备是否Health(故障或当机),A机作为服务器,可以得到其他设备的Health信号,其他设备作为Health的客户端。
首先,我大略查了snmp得资料,windows2003有snmp配置设置,VC.net中也有snmp函数(没仔细看),snmp得协议中没有Server和Client这种概念。
我现在不清楚怎么做,用系统配置还是自己开发,Server和Client作什么角色?谁能指点我一下。
我想,我的程序要判断装置的Health状态并处理,肯定需要开发snmp得代码,至少也得有一个获得其它装置snmp状态的程序,用什么可以做到了?只需要做这个就足够了吗(我当然想写的越少越好了)?
那位前辈做过这个方面的?或者能够提供资料的?请帮我一下。
谢谢啦
...全文
508 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cpls 2005-11-26
  • 打赏
  • 举报
回复
底层通讯实际上还是C/S结构的,用的是UDP, 非TCP.

要使用WinSNMP,需要有winsnmp.h、wsnmp32.lib和wsnmp.dll。下面给出读操作的过程,写操作类似。

发送请求报文过程:
 调用SnmpStartup( )函数启动WinSNMP。
 调用SnmpOpen( )函数创建会话句柄。
 调用SnmpStrToContext( )函数创建共同体句柄。
 调用SnmpStrToEntity( )函数创建管理实体和代理实体句柄。
 调用SnmpStrToOid( )函数创建读取对象的OID。
 调用SnmpCreateVbl( )函数创建变量绑定列表。
 调用SnmpCreatePdu( )函数创建协议数据单元PDU报文。
 调用SnmpSendMsg( )函数发送请求报文。
接收响应报文过程:
 调用SnmpRecvMsg( )函数接收响应报文。
 调用SnmpGetPduData( )函数提取协议数据单元。
 调用SnmpGetVbl( )函数提取变量绑定列表。
 调用SnmpGetVb( )函数提取变量绑定列表中的变量及其值。
 根据变量值的数据类型,进行相应的数据转换。
 调用SnmpClose( )函数结束会话。
 调用SnmpCleanup( )结束WinSnmp。

在实际中还需要调用其他一些函数以确保通信的正常进行,如:
 SnmpSetRetransmitMode( ):设置重传模式。
 SnmpSetTranslateMode( ):设置对实体或共同体的翻译模式。
 SnmpSetRetry( ):设置重传次数。
 SnmpSetTimeout( ):设置超时时间。
 SnmpCountVbl( ):计算变量绑定列表中的变量数目。
 SnmpFreeDescriptor( ):释放变量资源
 SnmpFreeContext( ):释放共同体资源。
 SnmpFreeEntity( ):释放实体资源。
 SnmpFreePdu( ):释放PDU资源。
 SnmpFreeVbl( ):释放变量绑定列表资源。
 SnmpGetLastError( ):获得最近发生的WinSNMP错误信息。



fwbmail 2005-11-25
  • 打赏
  • 举报
回复
自己顶

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧