4

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

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

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

(注意:在单台机器上运行模拟器是一项严格的要求。此外,我为每个模拟器拥有唯一的 IP/端口是不够的,我必须能够提前知道它们的值,以便我可以配置管理应用程序与它们正确交互。)

4

1 回答 1

6

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

于 2013-10-05T17:07:24.340 回答