說說ASNMP(ACE)包的不足……

衆所周知的基於C++實現的ACE框架,雖然設計得很好,可有很多不足,尤其是裏面的那個ASNMP包……
不止是沒做完,即使是做完的部分也有很多問題……
這不,遇到過好幾個bug,爲此折騰了好多天……(因爲實在捨不得放棄ACE……嘿嘿~)

比如,
1.IpAddress類型變量傳遞問題。
2.Datetime類型未實現的問題。
3.TrapV1的一個什麼字段無法獲取的問題。
4.無法處理trapV2的問題……(這個好像是沒做完,不算bug)

Datetime類型未實現,自己仿照其他類型實現一個即可。

麻煩在於問題1:
原來好像與OctetStr類型同樣處理的,不過這樣好像可以傳值,但是類型就分不清了。
因爲原來Vb的set_value..之類的方法似乎沒有針對IpAddress類型的重載。

如果加上的話,就可以設爲IpAddress類型,可這樣的話,值卻傳不過來了……

費了好半天時間……終於找到問題所在了……
關鍵就在於wpdu::convert_vb_to_smival(...)的那裏對IpAddress類型的處理。
如前面所說, 在這個方法裏,IpAddress和OctetStr是同等對待的。
可實際上,IpAddress類型是無法直接放到OctetStr裏的,因爲我發現他提供了個to_octet()方法。
修改下,將IpAddress用to_octet方法傳值即可。:)

好像即使在目前最新的5.6.7版ACE也存在以上問題。
所以呢,建議大家用ASNMP之前三思。^o^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章