gpt4 book ai didi

node.js - 如何从单个客户端向 TCP 服务器发送多个数据流

转载 作者:太空宇宙 更新时间:2023-11-03 22:03:32 25 4
gpt4 key购买 nike

服务器端代码

var net = require('net');

var server = net.createServer((connection) => {
console.log('server connected');

connection.on('data', (data) => {
console.log('data received');
console.log('data is: \n' + data);
});
});

var HOST = '127.0.0.1';
var PORT = '8000'


server.listen(PORT, HOST, function() {
//listening
console.log('server is listening to ' + PORT + '\n');

server.on('connection', function(){
console.log('connection made...\n')
})
});

客户端代码

var client = new net.Socket()

//connect to the server
client.connect(PORT,HOST,function() {
'Client Connected to server'

//send a file to the server
var fileStream = fs.createReadStream(__dirname + '/readMe.txt');
// console.log(__dirname + '/readMe.txt');
fileStream.on('error', function(err){
console.log(err);
})

fileStream.on('open',function() {
fileStream.pipe(client);
});

});

//handle closed
client.on('close', function() {
console.log('server closed connection')
});

client.on('error', function(err) {
console.log(err);
});

我想知道如何实现创建一个客户端和一个TCP服务器,并从一个客户端向服务器发送多个数据。

我知道可以有多个客户端可以连接到服务器,向服务器发出请求并获取响应,但我不希望这样,我想知道单个客户端是否可以向服务器发送多个数据流在 Node.js 中。

事情是假设有一个文件,其中存在 200 行 block 数据,所以我知道我们可以使用 createReadStream 读取该文件,但假设有多个文件包含 200 行数据(示例)如何通过 TCP 服务器发送这些多个文件

任何例子都将受到赞赏。

请使用示例进行解释,因为我是 Node.js 新手

上面的例子是将一个文件的数据发送到服务器,我的问题是如果客户端想要发送数百个文件(或任何数据流)怎么办,那么他如何通过单一介质发送到TCP服务器?

最佳答案

这可以使用net module来实现,fs module ,以及用于循环文件的基本 forEach 构造:

server.js

const net = require('net');
const host = "localhost";
const port = 3000;

const server = net.createServer((connection) => {
console.log('server connected');

connection.on('data', (data) => {
console.log(`data received: ${data}`);
});
});

server.listen(port, host, function () {
console.log(`server is listening on ' + ${port}`);

server.on('connection', function () {
console.log('connection made...\n')
})
});

client.js

const net = require("net");
const fs = require("fs");
const port = 3000;
const host = "localhost";

const files = [
"file1.txt",
"file1.txt",
"file1.txt"
// As many files as you want
]

const client = new net.Socket()

client.connect(port, host, function () {

files.forEach(file => {

const fileStream = fs.createReadStream(file);
fileStream.on('error', function (err) {
console.log(err);
})

fileStream.on('open', function () {
fileStream.pipe(client);
});

});
});

client.on('close', function () {
console.log('server closed connection')
});

client.on('error', function (err) {
console.log(err);
});

关于node.js - 如何从单个客户端向 TCP 服务器发送多个数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60221018/

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