在超时和重试方面使用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
答案 0 :(得分:1)
根据我在Windows平台上使用SNMP的经验,最小超时值为1秒。因此,即使您将其设置为低于该值的任何值,它也将默认为1秒。
每次重试时使用的超时值都会加倍。因此,在最坏的情况下,使用150ms 3重试配置,您将在1 + 2 + 2 + 2 = 7秒内对请求的响应失败。
我希望这会有所帮助。