Windows Snmp Management Api - Snmp超时/重试似乎不起作用

时间:2011-02-13 02:08:39

标签: snmp

在超时和重试方面使用MS SNMP Mgmt Api时,我注意到一些奇怪的snmp通信行为。我想知道Win Server 2008 R1 x64是否支持mgmt api。我的程序是一个C ++ 64bit snmp扩展代理,它使用mgmt api与其他代理进行通信。

这是我的伪代码:

SnmpMgrOpen(ip address, 150ms timeout, 3 retries)
start = getTickCount()
result = SnmpMgrRequest(get request with 3 or 4 OIDs)
finish = getTickCount()
if (result == some error)
{
     log Error including total time (i.e finish - start ticks)
}
SnmpMgrClose()

当snmpMgrRequest调用超时时,总时间等于1014ms到5000ms之间的任何时间。如果,我将重试设置为0,则总时间仍为1014ms至5000ms。

我希望,重试为0时,SnmpMgrRequest将在150ms内超时。文档似乎暗示了这一点。我错过了什么,至少有一秒的最短超时时间?可能导致这种行为的原因是什么?

非常感谢任何帮助。我在这里迷路了。

ballerstyle_98@hotmail.com

1 个答案:

答案 0 :(得分:1)

根据我在Windows平台上使用SNMP的经验,最小超时值为1秒。因此,即使您将其设置为低于该值的任何值,它也将默认为1秒。

每次重试时使用的超时值都会加倍。因此,在最坏的情况下,使用150ms 3重试配置,您将在1 + 2 + 2 + 2 = 7秒内对请求的响应失败。

我希望这会有所帮助。