Javascript Node.js UDP网络多播

Javascript Node.js UDP网络多播,javascript,node.js,network-programming,udp,multicast,Javascript,Node.js,Network Programming,Udp,Multicast,我在UDP多播概念验证中遇到了一个重复的EADDRNOTAVAIL问题。我有一台Linux服务器正在向Windows客户端发送多播消息,但我尝试将其逆转,但没有效果。。。在同一台机器上运行客户端和服务器时,服务器工作正常,但不能通过同一网络 下面是我尝试使用的代码、我使用的IP以及我收到的错误 我不确定我做错了什么 环境 Windows本地IP:192.168.1.10 Linux本地IP:192.168.1.11 服务器:Server.js 客户端:Client.js 错误 我敢肯定您加入了错

我在UDP多播概念验证中遇到了一个重复的EADDRNOTAVAIL问题。我有一台Linux服务器正在向Windows客户端发送多播消息,但我尝试将其逆转,但没有效果。。。在同一台机器上运行客户端和服务器时,服务器工作正常,但不能通过同一网络

下面是我尝试使用的代码、我使用的IP以及我收到的错误

我不确定我做错了什么

环境 Windows本地IP:192.168.1.10 Linux本地IP:192.168.1.11

服务器:Server.js 客户端:Client.js 错误
我敢肯定您加入了错误的多播接口,因为出现了以下错误:

addMembership EADDRNOTAVAIL

它应该是您的本地接口地址: client.addMembership多播地址,本地地址

正如政府所说:

socket.addMembershipmulticastAddress[,多播接口] 告诉内核在给定的时间加入多播组 使用IP_添加_成员身份的multicastAddress和multicastInterface 套接字选项。如果未指定multicastInterface参数, 操作系统将选择一个接口并添加成员资格 去吧。要向每个可用接口添加成员资格,请调用 多次添加成员资格,每个接口一次


哇!我知道我错过了一些简单的事情。非常感谢你!在代码中将客户端上的地址更改为其自己的本地IP地址192.168.1.10有效!
const SRC_PORT = 6025;
const PORT = 6024;
const MULTICAST_ADDR = '239.255.255.250';
const LOCAL_IP = '192.168.1.11';
const dgram = require('dgram');
const server = dgram.createSocket("udp4");

server.bind(SRC_PORT, LOCAL_IP, function () {
  setInterval(function () {
    let message = new Buffer(new Date().toLocaleTimeString());
    server.send(message, 0, message.length, PORT, MULTICAST_ADDR, function () {
      console.log("Sent '" + message + "'");
    });
  }, 4000);
});
const PORT = 6024;
const MULTICAST_ADDR = '239.255.255.250';
const LOCAL_IP = '192.168.1.10';
const HOST_IP = '192.168.1.11';
const dgram = require('dgram');
const client = dgram.createSocket('udp4');

client.on('listening', function () {
  let address = client.address();
  console.log('UDP Client listening on ' + address.address + ":" + address.port);
});

client.on('message', function (message, rinfo) {
  console.log('Message from: ' + rinfo.address + ':' + rinfo.port + ' - ' + message);
});

//*** Also tried with client.bind(PORT, LOCAL_IP, ... and failed
client.bind(PORT, function () {
  client.addMembership(MULTICAST_ADDR, HOST_IP);
});
dgram.js:508
    throw errnoException(err, 'addMembership');
    ^

Error: addMembership EADDRNOTAVAIL
    at exports._errnoException (util.js:1026:11)
    at Socket.addMembership (dgram.js:508:11)
    at Socket.<anonymous> (~/dev/node-multicast/client.js:16:10)
    at Socket.g (events.js:286:16)
    at emitNone (events.js:91:20)
    at Socket.emit (events.js:185:7)
    at startListening (dgram.js:121:10)
    at dgram.js:228:7
    at _combinedTickCallback (internal/process/next_tick.js:77:11)