如何使用nodejs控制UDP数据包的源IP或端口

时间:2013-07-25 18:33:43

标签: node.js udp ip integration-testing snmp

我正在开发一种通过SNMP协议与嵌入式设备连接的应用程序。为了便于测试,我为带有Nodejs和snmpjs library的嵌入式设备编写了一个模拟器。模拟器响应SNMP获取/设置并将陷阱发送到管理应用程序。陷阱消息由snmpjs库构建,但使用Node的标准UDP套接字手动发送。

这在模拟一台设备时运行良好,但在尝试模拟多台设备时遇到了问题。具体地,管理应用程序通过分析携带陷阱的UDP数据包的源IP /端口来识别SNMP陷阱的源设备。这就排除了我同时模拟多个设备,这是应用程序最常见的用例。

所以,我的问题是:有没有办法用Nodejs控制/欺骗udp数据包的源IP或端口?或者,或许,是否可以使用某种代理来实现所需的结果?

(注意:在一台机器上运行模拟器是一项严格的要求。另外,我为每台模拟器提供独特的IP /端口是不够的,我必须能够提前知道它们的值,这样我才能配置管理应用程序以正确地与它们连接。)

1 个答案:

答案 0 :(得分:5)

解决方案很简单。我从udp套接字的send方法的节点文档中忽略了这一行,“如果套接字以前没有绑定调用绑定,则会为其分配一个随机端口号...”我只需要绑定首先是端口的套接字。我已经用测试脚本验证了这一点。