SNMP简单网络管理协议的介绍以及API使用

一、协议原理要点

    SNMP,简单网络管理协议,是TCP/IP协议簇的一个应用层协议。已经有3个版本,SNMPv1、SNMPv2、SNMPv3。

    SNMP中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request和Trap ,这5种消息类型在管理进程和代理进程之间交互(常见的例子如电脑主机上的管理进程与打印机上的代理进程之间的通信),示意如下图:

SNMP简单网络管理协议的介绍以及API使用_第1张图片

 

 消息报文封装如下:

SNMP简单网络管理协议的介绍以及API使用_第2张图片

二、API使用

1、SnmpMgrOpen(),打开获取会话句柄。

LPSNMP_MGR_SESSION
SNMP_FUNC_TYPE
SnmpMgrOpen(
    __in_opt LPSTR lpAgentAddress,          // Name/address of target agent
    __in_opt LPSTR lpAgentCommunity,        // Community for target agent
    IN INT   nTimeOut,                      // Comm time-out in milliseconds
    IN INT   nRetries                       // Comm time-out/retry count
    );

2、SnmpMgrClose();关闭句柄。

BOOL
SNMP_FUNC_TYPE
SnmpMgrClose(
    IN LPSNMP_MGR_SESSION session           // SNMP session pointer
    );

3、SnmpMgrStrToOid()、SnmpMgrOidToStr();转换对象标识符字符串格式(如".1.3.6.1.4.1.641.2.1.2.1.4.1")到内部对象标识符、内部对象标识符到字符串。

BOOL
SNMP_FUNC_TYPE
SnmpMgrStrToOid(
    __in_opt  LPSTR         string,         // OID string to be converted
    OUT AsnObjectIdentifier *oid            // OID internal representation
    );

BOOL
SNMP_FUNC_TYPE
SnmpMgrOidToStr(
    IN  AsnObjectIdentifier *oid,           // OID to be converted
    __deref_opt_out LPSTR   *string         // OID string representation
    );

4、SNMP_malloc() 为SNMP对象分配内存。

5、SnmpMgrRequest(); get、set请求发送。

SNMPAPI
SNMP_FUNC_TYPE
SnmpMgrRequest(
    IN     LPSNMP_MGR_SESSION session,           // SNMP session pointer
    IN     BYTE               requestType,       // Get, GetNext, or Set
    IN OUT RFC1157VarBindList *variableBindings, // Varible bindings
       OUT AsnInteger         *errorStatus,      // Result error status
       OUT AsnInteger         *errorIndex        // Result error index
    );

6、SnmpMgrTrapListen()、SnmpMgrGetTrap() 、SnmpMgrGetTrapEx()监听、获取trap消息

 

你可能感兴趣的:(windows)