gpt4 book ai didi

javascript - 如何将套接字绑定(bind)到多个端口,NodeJS

转载 作者:搜寻专家 更新时间:2023-10-31 23:54:47 24 4
gpt4 key购买 nike

我已经设置了一个 Node 应用程序,它从一个 IP 地址的端口接收数据包并将内容提供给网页。这个 IP 地址有流量通过两个端口,9999 和 10000。我的应用程序有以下代码:

    var PORT_ONE = 9999;
var PORT_TWO = 10000;
var SENSOR = '239.0.0.1';
var client = require('dgram').createSocket('udp4');
var dns = require('dns');

/* Client starts listening on IP */
client.on('listening', function () {
console.log('UDP Client listening on ' + SENSOR + ":" + PORT_TWO);

client.setMulticastTTL(1);
client.addMembership(SENSOR);
});

/* Client receives a message */
client.on('message', function (message, remote) {

var tempMessage = message.toString(); //cast Buffer var to String
var delimiter = "\n";
var tempData = tempMessage.split(delimiter);

console.log('From: ' + remote.address + ':' + remote.port +' - \n' + message);

var data = {
ip: [SENSOR],
info: [tempData]
};
sendMessage(data);
});

client.bind(PORT_ONE);
client.bind(PORT_TWO); //error here

当我在终端中运行我的 Node 应用程序时,我收到错误

dgram.js:163
throw new Error('Socket is already bound');

其中 dgram.js 是 Nodejs 库的一部分。绑定(bind)到 PORT_TWO 时出现错误。有没有办法将套接字绑定(bind)到多个端口?

最佳答案

我想在这里添加我的 2 美分,我通常做的是创建端口和 Ips 数组,并在它们上一个一个地进行循环绑定(bind)

udpclients = [5550,5551];
udpsockets=[]

var dgram = require('dgram');
udpclients.forEach(function(port){
var udpServer = dgram.createSocket('udp4');
udpServer.bind(port,'127.0.0.1')
udpServer.on('listening', function() {
var address = udpServer.address()
console.log("listening"+address.address+" port::"+address.port)
});
udpServer.on('message', function(msg, rinfo) {
console.log("message received :: "+ msg +" address::"+rinfo.address+ "port = "+ rinfo.port )
});
});

关于javascript - 如何将套接字绑定(bind)到多个端口,NodeJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24496022/

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