2011-02-13 68 views
0

當使用MS SNMP Mgmt Api在超時和重試方面我注意到一些奇怪的snmp通信行爲。我想知道Win Server 2008 R1 x64是否支持mgmt api。我的程序是一個C++ 64位snmp擴展代理,它也使用mgmt api與其他代理進行通信。Windows Snmp管理Api - Snmp超時/重試似乎不起作用

這是我的僞代碼:

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隨時隨地等於5000毫秒。如果我將重試次數設置爲0,則總時間仍然是1014ms到5000ms。

我認爲,重試爲0,SnmpMgrRequest將在150ms內超時。文檔似乎暗示了這一點。我是否缺少至少一秒的最小超時時間?什麼可能導致這種行爲?

任何幫助將不勝感激。我在這裏迷路了。

[email protected]

回答

1

我與SNMP在Windows平臺上的經驗最小超時值爲1秒。所以即使您將其設置爲低於此值的任何值,它也會默認爲1秒。

此外,每次重試都使用超時值加倍。因此,如果在最壞的情況下進行150ms 3重試配置,您將在1 + 2 + 2 + 2 = 7秒內對請求的響應失敗。

我希望這會有所幫助。