我正在开发一个与嵌入式设备通过SNMP协议交互的应用程序。为了方便测试,我使用Nodejs和snmpjs库编写了一个嵌入式设备模拟器。模拟器响应SNMP get/sets并向管理应用程序发送trap消息。trap消息由snmpjs库构建,但是使用Node的标准UDP套接字手动发送。
当模拟一个设备时,这个方法很有效,但是在模拟多个设备时遇到了问题。具体来说,管理应用程序通过分析携带trap的UDP数据包的源IP/port来识别SNMP trap的源设备。这排除了我同时模拟多个设备的可能性,而这是应用程序最常见的用例。
因此,我的问题是:是否有一种方法可以使用Nodejs控制/欺骗udp数据包的源IP或端口?或者,也许可以使用某种代理来实现所需的结果?
(注意:在单台机器上运行模拟器是严格要求的。另外,仅为每个模拟器提供唯一的IP/端口不足以满足要求,我必须能够预先知道它们的值,以便正确配置管理应用程序与它们进行交互。)
当模拟一个设备时,这个方法很有效,但是在模拟多个设备时遇到了问题。具体来说,管理应用程序通过分析携带trap的UDP数据包的源IP/port来识别SNMP trap的源设备。这排除了我同时模拟多个设备的可能性,而这是应用程序最常见的用例。
因此,我的问题是:是否有一种方法可以使用Nodejs控制/欺骗udp数据包的源IP或端口?或者,也许可以使用某种代理来实现所需的结果?
(注意:在单台机器上运行模拟器是严格要求的。另外,仅为每个模拟器提供唯一的IP/端口不足以满足要求,我必须能够预先知道它们的值,以便正确配置管理应用程序与它们进行交互。)
send
方法的这一行,"如果套接字之前没有通过调用bind绑定过,它将被分配一个随机端口号..." 我只需要先将套接字绑定到一个端口即可。我已经通过测试脚本验证了这一点。 - jared