2013-07-25 17 views
2

我正在研究通過SNMP協議與嵌入式設備進行交互的應用程序。爲了便於測試,我用Nodejs和snmpjs library爲嵌入式設備編寫了一個模擬器。模擬器響應SNMP獲取/設置並將陷阱發送到管理應用程序。陷阱消息由snmpjs庫構建,但是使用Node的標準UDP套接字手動發送。如何使用nodejs控制UDP數據包的源IP或端口

這在模擬一個設備時效果很好,但在嘗試模擬多個設備時遇到了問題。具體來說,管理應用通過分析攜帶陷阱的UDP報文的源IP /端口來識別SNMP陷阱的源設備。這排除了我同時模擬多臺設備,這是應用程序最常見的用例。

所以,我的問題是:有沒有一些方法來控制/欺騙與Nodejs udp數據包的源IP或端口?或者,也許有可能使用某種代理來實現預期的結果? (注意:在單臺機器上運行模擬器是一項嚴格的要求,而且每個模擬器都有唯一的IP /端口是不夠的,我必須能夠提前知道它們的值,以便我可以將管理應用程序配置爲與它們正確接口。)

+1

糟糕...解決方案很簡單。我從udp套接字的'send'方法的節點文檔忽略了這一行,「如果套接字以前沒有綁定一個綁定調用,它會被分配一個隨機端口號......」我只需要綁定套接字首先到港口。我已經用測試腳本驗證了這一點。 – jared

+0

我認爲在這種情況下回答你自己的問題是可以的。不是嗎? – Jolta

+0

我相信你是對的。原本我已經24小時過去了,所以我發表了評論。爲了清晰起見,我已將該評論貼上了答案。 – jared

回答

4

解決方案很簡單。我從udp socket的send方法的節點文檔中忽略了這一行,「如果套接字以前沒有綁定調用綁定,則會分配一個隨機端口號......」我只需要將套接字綁定到港口第一。我已經用測試腳本驗證了這一點。

相關問題