欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于Nodejs的TCP通信

程序员文章站 2022-03-21 23:43:15
使用NodeJs实现TCP通信原理:服务端TCP监听来自客户端的连接请求,并使用TCP连接向客户端发送数据;客户端TCP连接到服务端并与服务器交互数据。客户端与服务端之间依靠套接字进行双向通信server.jsconst net = require('net');const HOST = '127.0.0.1';const PORT = 8080;//统计连接客户端的个数var count = 0;// 创建TCP服务器const server = new net.create...

使用NodeJs实现TCP通信

nodejs的net模块文档


原理:

服务端TCP监听来自客户端的连接请求,并使用TCP连接向客户端发送数据;
客户端TCP连接到服务端并与服务器交互数据。客户端与服务端之间依靠套接字进行双向通信
server.js
const net = require('net');
const HOST = '127.0.0.1';
const PORT = 8080;

//统计连接客户端的个数
var count = 0;

// 创建TCP服务器
const server = new net.createServer();

server.setEncoding = 'UTF-8';
//获得一个连接,该链接自动关联scoket对象
server.on('connection', sock => {

    sock.name = ++count
    console.log(`当前连接客户端数:${count}`);

    // 为这个socket实例添加一个"data"事件处理函数
    //客户端发送数据时触发data事件
    //接收client发来的信息  
    sock.on('data', data => {

        console.log(`客户端${sock.name}发来一个信息:${data}`);
        // 回发该数据,客户端将收到来自服务端的数据
        sock.write(`服务端收到了你发送的一条信息:${data}`);


    });


    //为socket添加error事件处理函数
    sock.on('error', error => { //监听客户端异常
        console.log('error' + error);
        sock.end();
    });

    // 为这个socket实例添加一个"close"事件处理函数
    //当对方的连接断开以后的事件
    //服务器关闭时触发,如果存在连接,这个事件不会被触发,直到所有的连接关闭
    sock.on('close', () => {
        console.log(`客户端${sock.name}下线了`);

    });

})

//listen函数开始监听指定端口
server.listen(PORT, HOST, () => {
    console.log(`服务器已启动,运行在:http://${HOST}:${PORT}`);

});
client.js
const net = require('net');
const HOST = '127.0.0.1';
const PORT = 8080;

const client = new net.Socket();

client.setEncoding = 'UTF-8';

//与服务器进行连接
client.connect(PORT, HOST, () => {

  console.log('已连接到: ' + HOST + ':' + PORT);

  // 建立连接后向服务器发送数据,服务器将收到这些数据 
  client.write('我是client,我来自客户端!');


});

// 为客户端添加data事件处理函数
// data是服务器发回的数据
client.on('data', data => {

  console.log(data.toString());


});

// 为客户端添加error事件处理函数
client.on('error', error => {
  console.log('error' + error);
  client.end();
});

// 为客户端添加close事件处理函数
client.on('close', () => {
  console.log('服务器端下线了');


});
效果演示
  1. 先在终端输入node server.js启动服务器端
    基于Nodejs的TCP通信

  2. 在打开一个终端输入node client.js启动客户端
    基于Nodejs的TCP通信
    此时server端显示
    基于Nodejs的TCP通信
    当再次打开另一个终端执行node client.js
    基于Nodejs的TCP通信

  3. 关闭客户端
    server端显示
    基于Nodejs的TCP通信

本文地址:https://blog.csdn.net/weixin_43865551/article/details/109248982