gpt4 book ai didi

javascript - UDP组播系统

转载 作者:行者123 更新时间:2023-11-30 00:20:06 26 4
gpt4 key购买 nike

我正在尝试创建一个分布式信息系统,该系统使用具有多播通信的对等架构。

首先我开始实现多播通信。我从来没有这样做过,所以我有一些问题很难理解为什么它不能正常工作。

这是我设法做到的:

服务器

var SRC_PORT = 6025;
var PORT = 6024;
var MULTICAST_ADDR = '239.255.255.250';
var dgram = require('dgram');
var server = dgram.createSocket("udp4");

server.bind(SRC_PORT, function () {
setInterval(multicastNew, 4000);
});

function multicastNew() {
var message = new Buffer("Multicast message!");
server.send(message, 0, message.length, PORT , MULTICAST_ADDR, function () {
console.log("Sent '" + message + "'");
});
}

客户端

var PORT = 6024;
var MULTICAST_ADDR = '239.255.255.250';
var dgram = require('dgram');
var client = dgram.createSocket('udp4');

client.on('listening', function () {
client.setBroadcast(true);
var 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);
});

client.bind(PORT, function () {
client.addMembership(MULTICAST_ADDR);
});

当我启动服务器和客户端时,一切正常。来自 server.js 的消息成功发送到 client.js。

问题

当我想要有多个客户端( Node )时,问题就出现了。将来我想向所有客户端( Node )发出请求,我犯了什么错误,不允许使用多播从所有客户端发送一些信息。

使用上面的代码我无法同时打开 2 个客户端来接收来自服务器的消息。

这是尝试连接超过 1 个客户端时的错误:

events.js:85
throw er; // Unhandled 'error' event
^
Error: bind EADDRINUSE
at exports._errnoException (util.js:746:11)
at dgram.js:224:28
at dns.js:85:18
at process._tickCallback (node.js:355:11)
at Function.Module.runMain (module.js:503:11)
at startup (node.js:129:16)
at node.js:814:3

我知道问题在于我使用相同的代码两次 (client.js) 以及相同的端口和其他参数。为了在更多客户端上使用多播发送(通过 server.js)和接收成功的消息,我犯了什么错误?

最佳答案

我不确定您使用的是哪个操作系统,但您可以在该主机上创建 7 个具有不同 IP 的虚拟接口(interface),并为每个客户端使用唯一的 IP。

这样所有客户端都可以绑定(bind)到同一个端口并与服务器通信

HTH

关于javascript - UDP组播系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33441490/

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