WinSnmp响应消息始终在V1中 我正在用WinSnmp创建一个C++应用程序来管理Windows上的SNMP代理。 它工作得很好,但是我发送的所有“响应”消息都在V1(0)中,尽管我设置了SNMPAPI_UNTRANSLATED_V2 translate模式,GET请求在V2中。 我不明白为什么,我也不知道如何强制版本V2

WinSnmp响应消息始终在V1中 我正在用WinSnmp创建一个C++应用程序来管理Windows上的SNMP代理。 它工作得很好,但是我发送的所有“响应”消息都在V1(0)中,尽管我设置了SNMPAPI_UNTRANSLATED_V2 translate模式,GET请求在V2中。 我不明白为什么,我也不知道如何强制版本V2,c++,snmp,winsnmp,C++,Snmp,Winsnmp,我的代码: 如果有人有主意。谢谢 看起来您的窗口的SNMP代理已损坏。即使是专业人士也会犯SNMP实现错误。几年前,我和一些非常昂贵的企业北电和思科交换机一起经历了一场噩梦。谢谢你的回答。我看看这是否真的有问题。这家供应商的标准操作规程。从2005年开始,他们也没有实现SNMP RFC4022。从1989年起,他们的另一个产品仍然没有实现IETF标准。 #include "stdafx.h" #include <Winsnmp.h> #pragma comment(lib, "W

我的代码:


如果有人有主意。谢谢

看起来您的窗口的SNMP代理已损坏。即使是专业人士也会犯SNMP实现错误。几年前,我和一些非常昂贵的企业北电和思科交换机一起经历了一场噩梦。谢谢你的回答。我看看这是否真的有问题。这家供应商的标准操作规程。从2005年开始,他们也没有实现SNMP RFC4022。从1989年起,他们的另一个产品仍然没有实现IETF标准。
#include "stdafx.h"
#include <Winsnmp.h>

#pragma comment(lib, "Wsnmp32.lib")


SNMPAPI_STATUS ReceiveMessage( HSNMP_SESSION hSession )
{
    SNMPAPI_STATUS status;

    HSNMP_ENTITY srcEntity, destEntity;
    HSNMP_CONTEXT context;
    HSNMP_PDU pdu;

    status = SnmpRecvMsg(hSession, &srcEntity, &destEntity, &context, &pdu);
    if (status == SNMPAPI_SUCCESS) {
        smiINT pduType, errorStatus, errorIndex;
        smiINT32 requestId;
        HSNMP_VBL vbl = NULL;
        if (pdu) {
            if (SnmpGetPduData(pdu, &pduType, &requestId, &errorStatus, &errorIndex, &vbl) == SNMPAPI_SUCCESS) {

                if (pduType == SNMP_PDU_GET) {
                    HSNMP_PDU responsePdu = SnmpCreatePdu(hSession, SNMP_PDU_RESPONSE, requestId, SNMP_ERROR_NOERROR, 0, vbl);

                    if (SnmpSendMsg(hSession, destEntity, srcEntity, context, responsePdu) != SNMPAPI_SUCCESS) {
                        printf("error");
                    }
                    SnmpFreePdu(responsePdu);
                }

                SnmpFreeVbl(vbl);
            }
            SnmpFreePdu(pdu);
        }
        SnmpFreeEntity(srcEntity);
        SnmpFreeEntity(destEntity);
        SnmpFreeContext(context);
    }

    return status;
}

static SNMPAPI_STATUS CALLBACK snmpCallback
(IN HSNMP_SESSION hSession,
 IN HWND hWnd,
 IN UINT wMsg,
 IN WPARAM wParam,
 IN LPARAM lParam,
 IN LPVOID lpClientData)
{
    SNMPAPI_STATUS res;
    if (wParam == 0) {
        res = ReceiveMessage(hSession);
    } else if (wParam == SNMPAPI_TL_TIMEOUT) {
        res = SNMPAPI_SUCCESS;
    }

    return res;
}

int _tmain(int argc, _TCHAR* argv[])
{
    smiUINT32 majVersion, minorVersion, level, translateMode, retransmitMode;
    if (SnmpStartupEx(&majVersion, &minorVersion, &level, &translateMode, &retransmitMode) == SNMPAPI_SUCCESS) {

        if (SnmpSetTranslateMode(SNMPAPI_UNTRANSLATED_V2) != SNMPAPI_SUCCESS) {
            printf("Unable to set translate mode");
        }
        HSNMP_SESSION hSession = SnmpCreateSession(NULL, 0, snmpCallback, NULL);
        SnmpGetTranslateMode(&translateMode);
        if (hSession) {
            HSNMP_ENTITY localEntity = SnmpStrToEntity(hSession, "0.0.0.0");
            SnmpListen(localEntity, SNMPAPI_ON);

            while(true) {
                Sleep(1000);
            }
        }
    }

    return 0;
}
No.     Time           Source                Destination           Protocol Length Info
    126 2.592412000    10.247.29.212         10.247.29.112         SNMP     90     get-request 1.3.6.1.4.1.4865.2.100.1.800001.1.1.0

Internet Protocol Version 4, Src: 10.247.29.212 (10.247.29.212), Dst:
10.247.29.112 (10.247.29.112) User Datagram Protocol, Src Port: rapidbase (1953), Dst Port: snmp (161) Simple Network Management Protocol
    version: v2c (1)
    community: public
    data: get-request (0)
        get-request
            request-id: 19
            error-status: noError (0)
            error-index: 0
            variable-bindings: 1 item
                1.3.6.1.4.1.4865.2.100.1.800001.1.1.0: Value (Null)
                    Object Name: 1.3.6.1.4.1.4865.2.100.1.800001.1.1.0 (iso.3.6.1.4.1.4865.2.100.1.800001.1.1.0)
                    Value (Null)

No.     Time           Source                Destination           Protocol Length Info
    127 2.595141000    10.247.29.112         10.247.29.212         SNMP     90     get-response 1.3.6.1.4.1.4865.2.100.1.800001.1.1.0

Internet Protocol Version 4, Src: 10.247.29.112 (10.247.29.112), Dst:
10.247.29.212 (10.247.29.212) User Datagram Protocol, Src Port: 54034 (54034), Dst Port: rapidbase (1953) Simple Network Management Protocol
    version: version-1 (0)
    community: public
    data: get-response (2)
        get-response
            request-id: 19
            error-status: noError (0)
            error-index: 0
            variable-bindings: 1 item
                1.3.6.1.4.1.4865.2.100.1.800001.1.1.0: Value (Null)
                    Object Name: 1.3.6.1.4.1.4865.2.100.1.800001.1.1.0 (iso.3.6.1.4.1.4865.2.100.1.800001.1.1.0)
                    Value (Null)