帮助在c++中使用SNMP
Help with SNMP in C++?
我想用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 nn",
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 nn",
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…我不知道下一步该怎么办。
对于out参数,如SnmpStartup
,传递将接收值的uint32的地址:
smiUINT32 majorVers;
smiUINT32 minorVers;
smiUINT32 nLevel;
smiUINT32 translateMode;
smiUINT32 retranslateMode;
SnmpStartup(&majorVers, &minorVers, &nLevel, &translateMode, &retranslateMode);
可能会有更多的错误,但这可能会让你通过第一垒。
几年前,我不得不为一个Windows应用程序做一个SNMP模块,由于缺乏文档和在线资源,我最终购买了以下书籍:
- Windows NT SNMP(非常古老但非常有用,它提供了示例代码)
- 基本SNMP
相关文章:
- SNMP 代理在单元测试期间断开连接
- 如何确定请求的 OID 是否在具有 net-snmp API 的表中?
- 应用程序未发送所有 SNMP 陷阱
- 如何使用 snmp++ 启用/禁用交换机端口
- 使用Net SNMP的snmpset的多个值
- 如何使用C中的Net SNMP发送V2陷阱
- SNMP 类型无符号32 的正确编码是什么
- 如何使用 C/C++自动检测 snmp 设备
- 使用.net C#的SNMP项目发生封送错误
- 查找使用AgentX实现SNMP表的示例代码
- net-snmp没有正确更改auth和priva协议
- 带有net-snmp的C++Qt5在构建后崩溃
- 使用Qt和C++创建SNMP代理
- Windows Server 2012上的SNMP扩展代理无法连接到需要数据的端口
- 如何在net-snmp中打印整数和Counter32值
- SNMP:无法创建/设置变量,编码错误
- 通过c、c++或Java访问SNMP
- Linux下的SNMP支持
- Net-SNMP -编译一个新的MIB模块,不编译整个SNMP Agent
- 与开发SNMP扩展代理DLL相关