javascript - 使用 node.js 监听 udp 数据报

标签 javascript node.js sockets udp

我正在开发一个 C 应用程序从端口 44044 发送 udp 数据报的项目,我想使用 node.js v0.10.20 将这些数据包简单地回显到控制台。

我用经典的例子来连接:

var dgram = require('dgram');
var port = 44044;

socket = dgram.createSocket('udp4');

socket.on('message', function (msg, info){
    console.log(msg.toString());
 });

socket.on('listening', function(){
    var address = socket.address();
    console.log("listening on :" = address.address + ":" + address.port);
});

socket.bind(port);

但是,当我运行该示例时,我的 C 应用程序提示它用于广播的端口 44044 已被使用。相反,如果我先启动我的 C 应用程序,node.js 应用程序会立即返回错误“错误:绑定(bind) EADDRINUSE”。

现在我明白这意味着我有两台服务器试图在同一个端口上提供服务。但是我没有得到的是如何获得一个 Node 线程来监听端口 44044 上的 udp 广播?阅读 node.js 文档并没有帮助我解决这个问题。

最佳答案

尝试在您的 C 程序和 Node 应用程序中使用 SO_REUSEADDR:

socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });

代替:

socket = dgram.createSocket('udp4');

关于javascript - 使用 node.js 监听 udp 数据报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29687363/

相关文章:

javascript - 如何在 Ubuntu 中恢复 npm 的默认全局路径?

node.js - Jasmine 不会在测试完成时退出导致 CI​​ 停滞

python - 关闭并重新打开Python套接字后为"[Errno 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted"

javascript - 如何延迟绑定(bind) KnockoutJS observable

javascript - 使用 CryptoJS 加密并使用 Objective-C 解密

javascript - 单元格之间的链接不是 "flat"- JointJS

javascript - 渲染页面时如何从 Handlebars 获取 Angular 数据

C#:如何处理乱序的TCP数据包?

c++ - 快速修复套接字错误 : Connection reset by peer c++

javascript - 浏览器选项卡之间的通信