gpt4 book ai didi

node.js - Win 7 上的 UDP 绑定(bind)出现 Nodejs EINVAL 错误

转载 作者:太空宇宙 更新时间:2023-11-03 22:17:43 27 4
gpt4 key购买 nike

我仅在 Windows 7 上的 Nodejs 10.5 上收到 UDP 绑定(bind)错误 EINVAL。 Node 6 和 8 不会出现故障,并且可以在 Linux 下运行。至少可以说这很烦人,因为我在 Windows 下进行所有基本开发。这是 Node 的一大优势。

绑定(bind)调用(以新的异步形式)失败,但发送方法中的内部绑定(bind)也失败。实际上我只想发送数据(广播),所以我通常不会绑定(bind)套接字,但是,发送方法会自动执行此操作。我已经通过使用绑定(bind)方法验证了这一点,但也失败了。

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 进行发送调用?

有人可以验证一下发送功能是否可以在 Windows 7 10.5 中运行吗非常感谢

最佳答案

看来只有在数据报绑定(bind)到端口之后才能设置广播标志(如果在发送之前不绑定(bind),则该端口将绑定(bind)到端口 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();
});
});

关于node.js - Win 7 上的 UDP 绑定(bind)出现 Nodejs EINVAL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18956430/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com