使用node.js来监听udp数据报

时间:2015-04-16 22:57:52

标签: 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应用程序会立即返回错误"错误:绑定EADDRINUSE"。

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

2 个答案:

答案 0 :(得分:1)

尝试在C程序中使用SO_REUSEADDR并在节点应用中使用:

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

而不是:

socket = dgram.createSocket('udp4');

答案 1 :(得分:0)

C app从 端口44044发送 发送到 的端口是什么?这是您的node.js程序需要监听的端口。