NodeJS如何广播一个UDP数据包

NodeJS How to broadcast a UDP packet

要广播UDP到端口65123,我写如下。

    let broadcastClient = dgram.createSocket('udp4')
    broadcastClient.on('listening', () => {
      console.log('now listening...')
      broadcastClient.setBroadcast(true)

      const msg = Buffer.from('helele')
      setInterval(() => {
        console.log('send message')
        broadcastClient.send(msg, 65123, '255.255.255.255', (err, bytes) => {
          if (err) console.error('broadcast error', err)
          if (bytes) console.log('bytes', bytes)
        })
      }, 300)
    })
    broadcastClient.bind(65120)

日志显示发送正确。 但是我用Wireshark查了一下,没有广播消息。

我做错了什么?

255.255.255.255 并不意味着完全广播。 所以我应该得到像下面这样的本地广播地址。

广播地址=(~子网掩码)| (主机的 IP 地址)

改为255.255.255.255,使用192.168.0.255,UDP广播可以成功。