我只在Windows 7上的nodejs 10.5上收到UDP绑定错误EINVAL。 节点6和8不会失败,它可以在linux下运行。至少可以说这很烦人,因为我在windows下做了所有的基本开发。一个伟大的Node优势。
绑定调用(以新的异步形式)失败,但send方法中的内部绑定也失败。 实际上我只想发送数据(广播),所以我通常不会绑定套接字,但是,send方法会自动执行此操作。我已经通过绑定方法验证了这一点,这也失败了。
Created Dgram socket 255.255.255.255:3001
events.js:72
throw er; // Unhandled 'error' eve
^
Error: bind EINVAL
at errnoException (dgram.js:440:11)
at dgram.js:207:28
at dns.js:72:18
at process._tickCallback (node.js:415:
从错误堆栈:当地址被指定为地址而不是字符串时,为什么使用DNS发送呼叫?
有人可以验证发送是否适用于10.5中的Windows 7 非常感谢
答案 0 :(得分:1)
看起来您不能设置广播标志,直到数据报绑定到端口之后(如果您在发送之前没有绑定端口,则端口绑定到端口0)。以下代码段显示了如何实现逻辑。
var client = dgram.createSocket("udp4");
console.log('binding');
client.bind(0);
client.on('listening', function () {
console.log('setting broadcast flag');
client.setBroadcast(true);
console.log('sending');
client.send(message, 0, message.length, 41234, '255.255.255.255', function (err, bytes) {
console.log("Sent message: " + err);
client.close();
});
});