1 / 1 / 1
Регистрация: 07.05.2014
Сообщений: 44
1

Опрос сервера по SNMP: SnmpRecvMsg function did not complete successfully because all output parameters are NU

22.08.2014, 13:56. Показов 1871. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброй пятницы.

Пытаюсь написать простое консольное приложение (Visual Studio 2010) для опроса сервера по SNMP. Изначально делал через SNMP.h и функцию SnmpMgrRequest - всё работает. А теперь взял WnSNMP.h (SnmpSendMsg и SnmpRecvMsg) и столкнулся с ошибкой:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <Windows.h>
#include <WinInet.h>
#include <WinSnmp.h>
#include <iostream>
#pragma comment(lib, "WSNMP32.LIB")
using namespace std;
 
 
SNMPAPI_STATUS CALLBACK fCallback(HSNMP_SESSION hSession, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LPVOID lpClientData)
{
    cout << "CallBack beep! \n";
    return SNMPAPI_SUCCESS;
}
 
int main()
{
    cout << "Start \n";
 
    smiLPUINT32 nMajorVersion = 0;
        smiLPUINT32 nMinorVersion = 0;
            smiLPUINT32 nLevel = 0;
                smiLPUINT32 nTranslateMode = 0;
                    smiLPUINT32 nRetransmitMode = 0;
    cout << "SnmpStartup: " << SnmpStartup (  nMajorVersion, nMinorVersion, nLevel, nTranslateMode, nRetransmitMode) << "\n";
    /*
    cout << "nMajorVersion: " << nMajorVersion << "\n";
        cout << "nMinorVersion: " << nMinorVersion << "\n";
            cout << "nLevel: " << nLevel << "\n";
                cout << "nTranslateMode: " << nTranslateMode << "\n";
                    cout << "nRetransmitMode: " << nRetransmitMode << "\n";
                    */
    cout << "\n";
 
 
    HSNMP_SESSION hSession = SnmpCreateSession (0,0,fCallback,NULL);
        cout << "GetLastError(): " << GetLastError() << "\n";
            cout << "SnmpGetLastError: " << SnmpGetLastError(hSession) << "\n";
 
        cout << "SNMPAPI_NOT_INITIALIZED: " << SNMPAPI_NOT_INITIALIZED << "\n";
            cout << "SNMPAPI_OTHER_ERROR: " << SNMPAPI_OTHER_ERROR << "\n";
                cout << "SNMPAPI_NOOP: " << SNMPAPI_NOOP << "\n";
                    cout << "SNMPAPI_ALLOC_ERROR: " << SNMPAPI_ALLOC_ERROR << "\n";
 
    HSNMP_ENTITY srcEntity = SnmpStrToEntity(hSession,"172.30.1.180");
        HSNMP_ENTITY dstEntity = SnmpStrToEntity(hSession,"173.30.1.18");
    //HSNMP_ENTITY srcEntity = SnmpStrToEntity(hSession,"172.30.1.18");
    //  HSNMP_ENTITY dstEntity = SnmpStrToEntity(hSession,"173.30.1.180");
    cout << "\n";
 
 
    smiOCTETS Context;
        const char *pszCommunity = "private";
            Context.ptr = (smiLPBYTE)pszCommunity;
                Context.len = lstrlen(pszCommunity);
                    HSNMP_CONTEXT hContext = SnmpStrToContext(hSession, &Context);
    cout << "\n";
 
 
    smiOID SomeOid;
        SnmpStrToOid(".1.3.6.1.2.1.1.7.0", &SomeOid);
    smiVALUE value;
        value.syntax=SNMP_SYNTAX_INT;
            value.value.sNumber=777;
 
    HSNMP_VBL hVbl = SnmpCreateVbl(hSession, &SomeOid, &value);
        HSNMP_PDU hPDU = SnmpCreatePdu(hSession, SNMP_PDU_GET, NULL, NULL, NULL, hVbl);
 
    cout << "\n";
 
 
    cout << "SNMPAPI_SUCCESS: " << SNMPAPI_SUCCESS << "\n";
        cout << "GetLastError(): " << GetLastError() << "\n";
            cout << "SnmpGetLastError: " << SnmpGetLastError(hSession) << "\n";
    cout << "SnmpSendMsg: " << SnmpSendMsg ( hSession, srcEntity, dstEntity, hContext, hPDU) << "\n";
        cout << "GetLastError(): " << GetLastError() << "\n";
            cout << "SnmpGetLastError: " << SnmpGetLastError(hSession) << "\n";
    cout << "SnmpRecvMsg: " << SnmpRecvMsg ( hSession, &srcEntity, &dstEntity, &hContext, &hPDU) << "\n";
        cout << "GetLastError(): " << GetLastError() << "\n";
            cout << "SnmpGetLastError: " << SnmpGetLastError(hSession) << "\n";
 
    cout << value.value.sNumber << "\n";
 
 
    cout << "End \n";
    return 0;
}
Функция SnmpRecvMsg выполняется с ошибкой SNMPAPI_NOOP=8

Ошибка 8 это:
SNMPAPI_NOOP The function did not complete successfully because all output parameters are NULL. The application must specify at least one output parameter that is not NULL when calling a function that returns information to the application.

Что я делаю не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.08.2014, 13:56
Ответы с готовыми решениями:

Error: function definition does not declare parameters
Здравствуйте, возникла проблема при компиляции исходников игры. Os freebsd 9.2 Gcc 4.2 C ++ 98...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
1 / 1 / 1
Регистрация: 07.05.2014
Сообщений: 44
28.08.2014, 09:23  [ТС] 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <Windows.h>
#include <WinInet.h>
#include <WinSnmp.h>
#include <iostream>
#pragma comment(lib, "WSNMP32.LIB")
using namespace std;
 
 
SNMPAPI_STATUS CALLBACK fCallback(HSNMP_SESSION hSession, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LPVOID lpClientData)
{
    cout << "CallBack beep! \n";
    return SNMPAPI_SUCCESS;
}
 
int main()
{
    cout << "Start \n";
 
    smiLPUINT32 nMajorVersion = 0;
    smiLPUINT32 nMinorVersion = 0;
    smiLPUINT32 nLevel = 0;
    smiLPUINT32 nTranslateMode = 0;
    smiLPUINT32 nRetransmitMode = 0;
    cout << "SnmpStartup: " << SnmpStartup (  nMajorVersion, nMinorVersion, nLevel, nTranslateMode, nRetransmitMode) << "\n";
    /*
    cout << "nMajorVersion: " << nMajorVersion << "\n";
    cout << "nMinorVersion: " << nMinorVersion << "\n";
    cout << "nLevel: " << nLevel << "\n";
    cout << "nTranslateMode: " << nTranslateMode << "\n";
    cout << "nRetransmitMode: " << nRetransmitMode << "\n";
                    */
    cout << "\n";
 
 
    HSNMP_SESSION hSession = SnmpCreateSession (0,0,fCallback,NULL);
    cout << "GetLastError(): " << GetLastError() << "\n";
    cout << "SnmpGetLastError: " << SnmpGetLastError(hSession) << "\n";
 
    cout << "SNMPAPI_NOT_INITIALIZED: " << SNMPAPI_NOT_INITIALIZED << "\n";
    cout << "SNMPAPI_OTHER_ERROR: " << SNMPAPI_OTHER_ERROR << "\n";
    cout << "SNMPAPI_NOOP: " << SNMPAPI_NOOP << "\n";
    cout << "SNMPAPI_ALLOC_ERROR: " << SNMPAPI_ALLOC_ERROR << "\n";
 
    HSNMP_ENTITY srcEntity = SnmpStrToEntity(hSession,"172.30.1.180");
    HSNMP_ENTITY dstEntity = SnmpStrToEntity(hSession,"173.30.1.18");
    //HSNMP_ENTITY srcEntity = SnmpStrToEntity(hSession,"172.30.1.18");
    //  HSNMP_ENTITY dstEntity = SnmpStrToEntity(hSession,"173.30.1.180");
    cout << "\n";
 
 
    smiOCTETS Context;
    const char *pszCommunity = "private";
    Context.ptr = (smiLPBYTE)pszCommunity;
    Context.len = lstrlen(pszCommunity);
    HSNMP_CONTEXT hContext = SnmpStrToContext(hSession, &Context);
    cout << "\n";
 
 
    smiOID SomeOid;
    SnmpStrToOid(".1.3.6.1.2.1.1.7.0", &SomeOid);
 
    smiVALUE value;
    value.syntax=SNMP_SYNTAX_INT;
    value.value.sNumber=777;
 
    HSNMP_VBL hVbl = SnmpCreateVbl(hSession, &SomeOid, &value);
    HSNMP_PDU hPDU = SnmpCreatePdu(hSession, SNMP_PDU_GET, NULL, NULL, NULL, hVbl);
 
    cout << "\n";
 
    cout << "SNMPAPI_SUCCESS: " << SNMPAPI_SUCCESS << "\n";
    cout << "SnmpGetLastError: " << SnmpGetLastError(hSession) << "\n";
 
    cout << "SnmpSendMsg: " << SnmpSendMsg ( hSession, srcEntity, dstEntity, hContext, hPDU) << "\n";
    cout << "SnmpGetLastError: " << SnmpGetLastError(hSession) << "\n";
 
    cout << "SnmpRecvMsg: " << SnmpRecvMsg ( hSession, &srcEntity, &dstEntity, &hContext, &hPDU) << "\n";
    cout << "SnmpGetLastError: " << SnmpGetLastError(hSession) << "\n";
 
    cout << value.value.sNumber << "\n";
 
    cout << "End \n";
    return 0;
}
Переформатировал отступы, может это поможет...
0
28.08.2014, 09:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru