nodejs udp ERR_SOCKET_DGRAM_NOT_RUNNING 解决方法

本文记录了一次使用Node.js dgram模块进行UDP数据推送时遇到的问题。原本运行正常的程序突然出现客户端只能成功发送一条数据的情况,并且伴随着ERR_SOCKET_DGRAM_NOT_RUNNING错误。最终通过移除client.close()方法解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

跑了很久的代码程序,以前也一直是正常的,这次用户反映说收不到数据,排查发现是udp这块出错了。

我这边用的nodejs的dgram模块进行的udp传输;需求呢就是我这边设备每采集到一条数据就通过udp推送到客户平台。

我这边的原先发送数据的客户端代码大致如下:

const dgram = require('dgram');
const client = dgram.createSocket('udp4');
module.exports = sendToPlatform = {
 sendData: body => {
        const message = `2000#${body.timestamp}#${body.content}`
        client.send(message, 0, message.length, 41234, '192.168.1.7', (err) => {
            console.log(err)
            client.close()
        } 
  }
}

然后就是数据每采集到一条就调用一次sendData方法,自己模拟的服务器数据接收端有一直正常开启着;

但是服务器端每次只能收到一条数据,然后就再也收不到了;重启下客户端程序又是只能收到一条;

查看日志发现报错:ERR_SOCKET_DGRAM_NOT_RUNNING

查看dgram包发现这个错误描述是说:A call was made and the UDP subsystem was not running.

最后解决办法:注掉client.close()。。折腾了半天没想到就这样解决了

至今不太明白为啥我以前本机自己模拟都没有出错,跨机器就会因为这句话出错!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值