You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CR1000X数据记录仪无法通过UDPDataGram向Node.js UDP服务器发数据求助

排查CR1000X数据记录仪UDP数据发送失败问题

已知你的Node.js UDP服务器能正常接收其他Node.js客户端的UDP数据,但CR1000X通过UDPDataGram("192.168.31.112",6787,"test",100,0,0)发送的数据无法被服务器接收,以下是针对性的排查步骤:

1. 确认CR1000X与服务器的网络连通性

  • 在CR1000X的程序中添加Ping()命令,测试和服务器IP 192.168.31.112的连通性,确保两者在同一网段,子网掩码、网关配置正确,没有路由或防火墙阻断UDP流量。
  • 检查服务器所在设备的防火墙,确认UDP 6787端口的入站规则允许CR1000X所在网段访问,排除CR1000X的IP被单独拦截的可能。

2. 核对CR1000X的UDPDataGram参数

CR1000X的UDPDataGram参数格式为UDPDataGram(IPAddress, Port, OutString, Timeout, DestIPType, LocalPort),重点检查:

  • 超时参数(第4位)设为100毫秒过短,UDP发送需要一定时间,建议调整为1000毫秒或更长,避免因超时导致发送失败。
  • 尝试将LocalPort(第6位)从0改为固定端口(比如6788),避免自动分配端口时出现异常。
  • 简化测试字符串,比如把"test"改成"a",排除字符串编码或长度问题。

3. 验证服务器监听配置

  • 当前服务器用server.bind(6787)默认监听所有IPv4地址(0.0.0.0),但可以显式指定server.bind(6787, '0.0.0.0'),确保不会意外只监听localhost。
  • 检查服务器的listening日志,确认输出的监听地址是0.0.0.0:6787,而非127.0.0.1:6787(后者只会接收本地请求)。

4. 抓包确认数据是否发出

在服务器所在设备或同一网段的其他设备上用Wireshark抓包,过滤规则设为udp.port == 6787:

  • 如果没抓到来自CR1000X的UDP包,说明问题出在CR1000X的程序执行或网络配置,需要查看CR1000X的运行日志。
  • 如果抓到了包但服务器没输出日志,说明数据在传输路径中被拦截,检查交换机、路由器的UDP过滤规则。

5. 检查CR1000X的程序执行状态

  • 通过LoggerNet或Device Configuration Utility查看CR1000X的程序运行日志,确认UDPDataGram命令是否执行成功,有没有报错信息。
  • 确保UDPDataGram命令是在循环中被周期性调用,或者有触发条件(比如定时触发),如果只在程序初始化时执行一次,可能测试时命令已经执行完毕。

你的服务器代码

const dgram = require('node:dgram');
const server = dgram.createSocket('udp4');

server.on('connect', () => {
    console.log(`connect`);
    server.close();
});

server.on('close', () => {
    console.log(`close`);
});

server.on('error', (error) => {
    console.log(`error ${error}`);
});

server.on('listening', () => {
    const address = server.address();
    console.log(`server listening ${address.address}:${address.port} - :${address.family}`);
});
  

server.on('message', (msg, rinfo) => {
  console.log(`Received message: ${msg} from ${rinfo.address}:${rinfo.port}`);
});

server.bind(6787);

CR1000X测试命令

UDPDataGram("192.168.31.112",6787,"test",100,0,0)

测试用Node.js客户端代码

const dgram = require('dgram');
const client = dgram.createSocket('udp4');

const message = Buffer.from('Hello World!');

client.send(message, 6787, "192.168.31.112", (err) => {
    console.log(err)
  client.close();
});

client.on('message', (msg, rinfo) => {
  console.log(`Received response from ${rinfo.address}:${rinfo.port}: ${msg}`);
});

内容的提问来源于stack exchange,提问作者Dung Do

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 09:47:34