最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何在node.js(255.255.255.255)中订阅广播地址

运维笔记admin8浏览0评论

如何在node.js(255.255.255.255)中订阅广播地址

如何在node.js(255.255.255.255)中订阅广播地址

我听不到255.255.255.255上正在广播的消息。 ArtNet protocol docs表示ArtNet控制器在端口6454上广播到255.255.255.255上(另请参阅here。

[当我尝试使用node.js的255.255.255.255模块收听dgram时,我得到了一个“ EINVAL”错误,因为255.255.255.255是无效的地址。

我尝试订阅192.255.255.255192.168.255.255192.168.10.255(而不是255.255.255.255)。这些都不起作用。在Windows和Ubuntu上进行了测试。

const dgram = require('dgram');

const sock = dgram.createSocket('udp4', (msg, peer) => {
  console.log(msg, peer);
});

sock.bind(6454, () => {
  sock.addMembership('255.255.255.255');
});

Stacktrace:

dgram.js:581
    throw errnoException(err, 'addMembership');
    ^

Error: addMembership EINVAL
    at Socket.addMembership (dgram.js:581:11)
    at Socket.sock.bind (/home/kyle/temptest/listen3.js:15:8)
    at Object.onceWrapper (events.js:286:20)
    at Socket.emit (events.js:198:13)
    at startListening (dgram.js:128:10)
    at state.handle.lookup (dgram.js:249:7)
    at process._tickCallback (internal/process/next_tick.js:63:19)
    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
回答如下:

socket.addMembership()用于注册套接字作为多播流量的目的地。您在这里的用例是broadcast,而不是多播,因此不要尝试使用addMembership()

您不需要做任何特殊的事情就可以接收广播流量。就像已经在做的那样,只需将套接字插入bind()到适当的端口(在这种情况下为6454),然后只要接收到该端口的广播,套接字的message-event回调就会触发。

[如果您要编写测试程序以通过将广播流量发送到端口6454来锻炼您的听众,那么该测试程序将需要在其dgram套接字上调用setBroadcast(),然后再尝试通过send()到端口6454上的255.255.255.255。广播地址。

发布评论

评论列表(0)

  1. 暂无评论