我正在开发一个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文档并没有帮助我解决这个问题。
答案 0 :(得分:1)
尝试在C程序中使用SO_REUSEADDR
并在节点应用中使用:
socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
而不是:
socket = dgram.createSocket('udp4');
答案 1 :(得分:0)
C app从 端口44044发送 。 发送到 的端口是什么?这是您的node.js
程序需要监听的端口。