【问题标题】:Nodejs EINVAL error with UDP bind on Win 7Win 7上UDP绑定的Nodejs EINVAL错误
【发布时间】:2014-11-11 09:53:51
【问题描述】:

我仅在 Windows 7 上的 nodejs 10.5 上收到 UDP 绑定错误 EINVAL。 节点 6 和 8 不会失败,它可以在 linux 下运行。至少可以说这很烦人,因为我在 Windows 下进行所有基本开发。 Node 的一大优势。

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

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 上是否有效 非常感谢

【问题讨论】:

    标签: node.js sockets udp


    【解决方案1】:

    在数据报绑定到端口之前,您似乎无法设置广播标志(如果您在发送前未绑定端口,则端口绑定到端口 0)。下面的代码 sn -p 展示了如何实现逻辑。

    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();
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2018-09-02
      • 1970-01-01
      • 2020-09-30
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多