问一个SNMPTRAP问题,监听启动成功,但收不到陷入,大家帮忙看一下代码
MFC工程里启动了一个线程,代码是从网上看的,处理函数如下:
INT operation;
LPSTR agent;
LPSTR community;
RFC1157VarBindList variableBindings;
LPSNMP_MGR_SESSION session;
HANDLE hNewTraps = NULL;
if (!SnmpMgrTrapListen(&hNewTraps))/*这一步在装了TRAP服务后是可以成功的*/
{
printf("error on SnmpMgrTrapListen %d\n", GetLastError());
}
else
{
printf("snmputil: listening for traps...\n");
}
while(1)
{
DWORD dwResult;
/*程序在执行完过这个函数后,一直等待*/
if ((dwResult = WaitForSingleObject(hNewTraps, 0xffffffff))/*这一步能执行到,并且没有返回错误*/
== 0xffffffff)
{
printf("error on WaitForSingleObject %d\n",
GetLastError());
}
else if (!ResetEvent(hNewTraps))
{
printf("error on ResetEvent %d\n", GetLastError());
}
else
{
AsnObjectIdentifier enterprise;
AsnNetworkAddress IPAddress;
AsnInteger genericTrap;
AsnInteger specificTrap;
AsnTimeticks timeStamp;
RFC1157VarBindList variableBindings;
UINT i;
char *string = NULL;
while(SnmpMgrGetTrap(&enterprise, &IPAddress, &genericTrap,
&specificTrap, ×tamp, &variableBindings))
{
printf("snmputil: trap generic=%d specific=%d\n",
genericTrap, specificTrap);
if (IPAddress.length == 4) {
printf(" from -> %d.%d.%d.%d\n",
(int)IPAddress.stream[0], (int)IPAddress.stream[1],
(int)IPAddress.stream[2], (int)IPAddress.stream[3]);
}
if (IPAddress.dynamic) {
SNMP_free(IPAddress.stream);
}
for(i=0; i < variableBindings.len; i++)
{
SnmpMgrOidToStr(&variableBindings.list[i].name, &string);
printf("Variable = %s\n", string);
if (string) SNMP_free(string);
printf("Value = ");
SnmpUtilPrintAsnAny(&variableBindings.list[i].value);
} // end for()
printf("\n");
SnmpUtilOidFree(&enterprise);
SnmpUtilVarBindListFree(&variableBindings);
}
}
} // end while()
/*监听函数能够成功,但是代理端发送TRAP后,用抓包工具可以抓到TRAP包,函数WaitForSingleObject却不能跳出,即收不到自陷,看了下windows的服务,SNMPTRAP正在运行,并且防火墙也关了,哪位大虾帮忙分析下原因*/
INT operation;
LPSTR agent;
LPSTR community;
RFC1157VarBindList variableBindings;
LPSNMP_MGR_SESSION session;
HANDLE hNewTraps = NULL;
if (!SnmpMgrTrapListen(&hNewTraps))/*这一步在装了TRAP服务后是可以成功的*/
{
printf("error on SnmpMgrTrapListen %d\n", GetLastError());
}
else
{
printf("snmputil: listening for traps...\n");
}
while(1)
{
DWORD dwResult;
/*程序在执行完过这个函数后,一直等待*/
if ((dwResult = WaitForSingleObject(hNewTraps, 0xffffffff))/*这一步能执行到,并且没有返回错误*/
== 0xffffffff)
{
printf("error on WaitForSingleObject %d\n",
GetLastError());
}
else if (!ResetEvent(hNewTraps))
{
printf("error on ResetEvent %d\n", GetLastError());
}
else
{
AsnObjectIdentifier enterprise;
AsnNetworkAddress IPAddress;
AsnInteger genericTrap;
AsnInteger specificTrap;
AsnTimeticks timeStamp;
RFC1157VarBindList variableBindings;
UINT i;
char *string = NULL;
while(SnmpMgrGetTrap(&enterprise, &IPAddress, &genericTrap,
&specificTrap, ×tamp, &variableBindings))
{
printf("snmputil: trap generic=%d specific=%d\n",
genericTrap, specificTrap);
if (IPAddress.length == 4) {
printf(" from -> %d.%d.%d.%d\n",
(int)IPAddress.stream[0], (int)IPAddress.stream[1],
(int)IPAddress.stream[2], (int)IPAddress.stream[3]);
}
if (IPAddress.dynamic) {
SNMP_free(IPAddress.stream);
}
for(i=0; i < variableBindings.len; i++)
{
SnmpMgrOidToStr(&variableBindings.list[i].name, &string);
printf("Variable = %s\n", string);
if (string) SNMP_free(string);
printf("Value = ");
SnmpUtilPrintAsnAny(&variableBindings.list[i].value);
} // end for()
printf("\n");
SnmpUtilOidFree(&enterprise);
SnmpUtilVarBindListFree(&variableBindings);
}
}
} // end while()
/*监听函数能够成功,但是代理端发送TRAP后,用抓包工具可以抓到TRAP包,函数WaitForSingleObject却不能跳出,即收不到自陷,看了下windows的服务,SNMPTRAP正在运行,并且防火墙也关了,哪位大虾帮忙分析下原因*/
...全文
相关推荐
snmptrap.zip
例如,他们可以在设备上触发一个TRAP事件,然后观察SNMPtrap.exe是否能正确接收并显示相关信息。通过这种方式,可以快速定位和修复协议实现中的问题,提高设备的网络管理能力。
Use-SnmpTrap-Tools.rar_SNMPtrap
首先,我们需要理解 SnmpTrap 的基本概念。当网络设备(如路由器、交换机或服务器)遇到异常情况,如硬件故障、配置更改或性能问题,它会发送一个 SNMP 陷阱(trap)到一个或多个管理站。
java_conn_SNMPtrap_send_accept.rar_SNMP_SNMPtrap_snmp java
SNMPTrap的发送涉及设置陷阱源、目的地、协议版本、陷阱类型和相关变量绑定;接收则需要配置Trap监听器,并处理接收到的Trap消息。3.
SNMP_TRAP监听工具
通过解析这些信息,用户可以快速定位问题源头,提高故障排查效率。"TrapRcvr.msi"可能是一个安装文件,用于在用户的系统上部署这个SNMP TRAP监听器。"
windows上snmptrap接收工具
真实能在windows上使用的trap接收工具,找了好多软件好多都是抓包显示已经收到162报文了但是接收器就是不展示,这个软件带开关开启后能展示是否监听162端口。


网络编程
