<返回更多

Node基于TCP建立的服务器

2022-07-18    很懒的程序员
加入收藏

创建TCP服务器

Node.js中提供.NET模块,用来实现TCP服务器与TCP客户端之间的通信。

当我们使用JAVAScript来开发服务端的时候,只需要调用net模块就可以了。比如现在要创建一个TCP服务器,代码如下:App.js

const net = require("net");
const server = net.createServer(() => {
    console.log("客户端与服务器端连接已经建立")
})

server.listen("8000", 'localhost', function () {
    console.log("服务端开始监听")
    console.log("地址信息:",server.address())
})

这是简单的一个TCP通信,现在执行命令:node app.js

在浏览器输入localhost:8000。

这是终端的信息:

服务端开始监听
地址信息: { address: '127.0.0.1', family: 'IPv4', port: 8000 }
客户端与服务器端连接已经建立

我们的浏览器输入localhost:8000回车后,就是客户端与服务端建立的TCP通信。启动服务端,但是客户端没有连接,终端信息如下:

服务端开始监听
地址信息: { address: '127.0.0.1', family: 'IPv4', port: 8000 }

 

createServer方法返回被创建的TCP服务器,它的回调函数有一个参数,是TCP服务器监听的socket端口对象。这是在createServer的回调函数中监听connection事件。

 

然而,我们可以单独对connection事件进行监听:

const net = require("net")
const server = net.createServer();

server.listen(8000, 'localhost', function () {
    console.log('地址信息:', server.address())
});

server.on("connection", function (socket) {
    console.log('客户端开始已经连接');
    socket.setEncoding('utf8'); // 设置内容格式
    socket.on("data", function (res) {
        console.log("data==", socket.bytesRead)
    });

    socket.on('end', function () {
        console.log("客户端关闭连接")
    })
})

 

现在我们建立好了TCP服务器。

可以使用socket对象的pipe方法将客户端发送的数据流写入到其他文件中去:

客户端的完整代码:

const net = require("net")
const server = net.createServer();
const file = require('fs').createWriteStream('./text.txt');


server.listen(8000, 'localhost', function () {
    console.log('地址信息:', server.address())
});

server.on("connection", function (socket) {
    console.log('客户端开始已经连接');
    socket.setEncoding('utf-8'); // 设置内容格式
    socket.on("data", function (res) {
        console.log("data==", socket.bytesRead)
    });
    socket.pause();
    socket.resume();     
    socket.pipe(file, { end: false });
    // 客户端关闭连接时候,添加的结束标志
    socket.on("end", function () {
        file.end("结束了");
        socket.unpipe(file); // 取消对文件的写入
    })
    socket.on('end', function () {
        console.log("客户端关闭连接")
    })
})

创建TCP客户端

const net = require("net");
const client = new net.Socket();
client.setEncoding("utf8");
client.connect(8000, 'localhost', function () {
    console.log('已经连接服务器了');
    client.write('你好')
});

client.on('data', function (data) {
    console.log("服务器发送的数据", data)
})

客户端连接服务端后,服务端的日志文件text.txt,写入了“你好”

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>