Помогите с SNMP в C ++? - PullRequest
       55

Помогите с SNMP в C ++?

2 голосов
/ 11 июля 2011

Я пытаюсь написать простую программу с использованием WinSnmp на C ++. Там очень мало информации об этом, и я полностью потерян. Все, что я хочу сделать, это запросить принтеры в моей сети и прочитать информацию, отправленную мне. Вот мой код:

#include <WinSnmp.h>
#include <stdio.h>

smiLPUINT32 majorVers;
smiLPUINT32 minorVers;
smiLPUINT32 nLevel;
smiLPUINT32 translateMode;
smiLPUINT32 retranslateMode;

BYTE pdu;


int main()
{
    //Starting the snmp session
    SnmpStartup(majorVers, minorVers, nLevel, translateMode, retranslateMode);

    printf("%i majorVers \n %i minorVers \n "
           "%i nLevel \n "
           "%i translateMode \n "
           "%i retranslateMode \n\n", 
           majorVers, minorVers, nLevel, translateMode, retranslateMode);


    SnmpCleanup();
}

До сих пор я следовал API , пытаясь выяснить, как программа должна быть структурирована, но сложно написать программу, полностью основанную на API.

Я не могу найти хорошие учебники, примеры кода или полезную документацию в Интернете. Мне было интересно, знает ли кто-нибудь что-нибудь, что может привести меня в правильном направлении, например, рабочие фрагменты кода или полезные учебники, это было бы здорово. Заранее спасибо:)

РЕДАКТИРОВАТЬ: Я сделал немного прогресса, но я все еще застрял. Я пытаюсь выяснить значение окна консоли, чтобы передать его функции SnmpCreateSession, но у меня возникли проблемы. вот мой обновленный код:

#include <WinSnmp.h>
#include <stdio.h>
#define MY_BUFSIZE 1024 // Buffer size for console window titles.

smiLPUINT32 majorVers;
smiLPUINT32 minorVers;
smiLPUINT32 nLevel;
smiLPUINT32 translateMode;
smiLPUINT32 retranslateMode;

HWND window;
HWND hwndFound;

char* returnInfo;
char newWindowTitle[MY_BUFSIZE];
char oldWindowTitle[MY_BUFSIZE];

LPWSTR consoleTitle;
BYTE pdu = 1;

void Startup(){

    //Starting the snmp session
    SnmpStartup(majorVers, minorVers, nLevel, translateMode, retranslateMode);

    printf("%i majorVers \n"
           "%i minorVers \n"
           "%i nLevel \n"
           "%i translateMode \n"
           "%i retranslateMode \n\n", 
            majorVers, minorVers, nLevel, translateMode, retranslateMode);

    GetConsoleTitle(oldWindowTitle, MY_BUFSIZE);
    hwndFound = FindWindow(NULL, oldWindowTitle);

}

void CreateSession(){

    SnmpCreateSession(window,5,0,0);
    printf("create session returns: %s", SnmpCreateSession(window,5,0,0));

}

int main(){

    Startup();
    CreateSession();
    SnmpCleanup();
}

Все значения, которые у меня заканчиваются, на этом этапе равны NULL ... Я не знаю, что делать дальше.

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

Для из параметров, таких как SnmpStartup, передайте адрес UINT32, который получит значения:

smiUINT32 majorVers;
smiUINT32 minorVers;
smiUINT32 nLevel;
smiUINT32 translateMode;
smiUINT32 retranslateMode;

SnmpStartup(&majorVers, &minorVers, &nLevel, &translateMode, &retranslateMode);

Может быть больше ошибок, но это можетВы прошли первую базу.

2 голосов
/ 12 июля 2011

Мне пришлось создать модуль SNMP для приложения Windows несколько лет назад, и из-за отсутствия документации и сетевых ресурсов я приобрел следующие книги:

...