问一个SNMPTRAP问题,监听启动成功,但收不到陷入,大家帮忙看一下代码

godfly000 2008-04-11 09:07:54
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正在运行,并且防火墙也关了,哪位大虾帮忙分析下原因*/
...全文
671 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Treeyan 2008-04-14
  • 打赏
  • 举报
回复
是一样滴,msdn的例程也差不多一样的写法。可以到MSDN 的 Sample 里找到SNMP例子。防火墙都先要关掉,包括windows防火墙
godfly000 2008-04-13
  • 打赏
  • 举报
回复
那就奇怪了,抓保工具能抓到包,代理端发送TRAP应该没问题,而且我用mibbrower和eatherperk 都能抓到
可是我的程序确实没有响应,Treeyan你也是用的这几个函数吗?
Treeyan 2008-04-13
  • 打赏
  • 举报
回复
正好开发过Platform trap event 相关组件, 各种平台上都可以接受正常.没出现过你说的问题,故而有此推断.
Treeyan 2008-04-13
  • 打赏
  • 举报
回复
因162端口可以抓到包,而API函数没有响应,看起来象代理端发送TRAP的问题. 很难有理由怀疑是WINDOWS造成的问题
godfly000 2008-04-13
  • 打赏
  • 举报
回复
csdn的大虾都到哪去了,强烈呼唤,给点调试建议也好
godfly000 2008-04-13
  • 打赏
  • 举报
回复
继续关注
godfly000 2008-04-12
  • 打赏
  • 举报
回复
自己顶一下,顶者有分,大家帮忙,解决问题随便加分,有多少加 多少

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧