我正在开发一种通过SNMP协议与嵌入式设备连接的应用程序。为了便于测试,我为带有Nodejs和snmpjs library的嵌入式设备编写了一个模拟器。模拟器响应SNMP获取/设置并将陷阱发送到管理应用程序。陷阱消息由snmpjs库构建,但使用Node的标准UDP套接字手动发送。
这在模拟一台设备时运行良好,但在尝试模拟多台设备时遇到了问题。具体地,管理应用程序通过分析携带陷阱的UDP数据包的源IP /端口来识别SNMP陷阱的源设备。这就排除了我同时模拟多个设备,这是应用程序最常见的用例。
所以,我的问题是:有没有办法用Nodejs控制/欺骗udp数据包的源IP或端口?或者,或许,是否可以使用某种代理来实现所需的结果?
(注意:在一台机器上运行模拟器是一项严格的要求。另外,我为每台模拟器提供独特的IP /端口是不够的,我必须能够提前知道它们的值,这样我才能配置管理应用程序以正确地与它们连接。)
答案 0 :(得分:5)
解决方案很简单。我从udp套接字的send
方法的节点文档中忽略了这一行,“如果套接字以前没有绑定调用绑定,则会为其分配一个随机端口号...”我只需要绑定首先是端口的套接字。我已经用测试脚本验证了这一点。