当前位置: 首页 > article >正文

nodejs建立TCP服务器端和TCP客户端之间的连接

TCP服务器端,看名字也知道是建立在服务器上面的

//获取模块
const net =require('net');
//创建server服务器
const server=net.createServer();
//与客户端建立连接
server.on('connection',function(socket){
    console.log('客户端与服务器连接已经建立');
    //socket是客户端连接服务器端的对象,下面都是他的事件加方法
    //客户端返回数据触发data事件
    socket.on('data',function(data){
    //接收数据,因为数据都是二进制的buffer对象,所以得转换为我们能阅读的字符
        console.log('已接收到客户端发送的数据%s',data.toString('utf8'));
        //利用write()方法给客户端发送信息,并返回了data数据,这个data数据和客户端的数据是一样,只是把他原路返回
        socket.write('确认数据,并返回:'+data);
    });
    //发生错误的处理
    socket.on('error',function(err){
        if(err)
        {
            console.log('与客户端通信过程过发生错误'+err.code);
            //销毁socket对象,避免被利用
            socket.destroy();
        }
    });
    //socket的end事件,这个事件是监控服务端的end()方法的
    socket.on('end',function(){
        console.log('客户端连接被关闭');
        //socket.end();//关闭与客户端的连接用的,必须是{allowHalfOpen:true}时
        //关闭这个应用程序,是server不是socket不要写错了
        server.unref();
    });

	//socket端彻底关闭时触发close事件,当handle_err为true时是错误关闭,当为false是则是正常关闭
    socket.on('close',function(handle_err){
        if(handle_err)
        {
            console.log('由于一个错误导致socket端口被关闭');
            server.unref();
            return;
        }
        console.log('sokcet端口正常关闭');
    });
//返回server端的连接数,当大于或等于2时则关闭服务器连接
    server.getConnections(function(err,count){
        if(count===2)
        {
            server.close();
        }
    })
})
//连接主机和端口
server.listen(8431,'localhost');
//触发关闭事件
server.on('close',function(){
    console.log('TCP服务器被关闭');
})

//下面是客户端,也是放在机子上的,比如VPS

//获取net模块
const net =require('net');
//创建客户端
const client=new net.Socket();
//设置编码
client.setEncoding='utf8';
//与服务器进行连接
client.connect(8431,'localhost',function(){
    console.log('已连接到服务器');
    //向服务器端发送信息
    client.write('你好');
    //隔10秒后再追加数据
    setTimeout(function(){
        client.end('goodbye');
    },10000);
});
//接收到服务器端的数据
client.on('data',function(data){
    console.log('已接收服务器端发送的数据');
    console.log(data.toString('utf8'));
});
//连接出错时,输出错误码err.code
client.on('error',function(err){
    console.log('与服务器连接过程中发生错误'+err.code);
    //客户端销毁应用程序
    client.destroy();
})

http://www.kler.cn/a/420811.html

相关文章:

  • 模拟实现单链表 —— SingleLinkedList
  • 嵌入式蓝桥杯学习1 点亮LED
  • 8. Debian系统中显示屏免密码自动登录
  • Apache storm安装教程(单机版)
  • C++类与对象(二)
  • Vue 90 ,Element 13 ,Vue + Element UI 中 el-switch 使用小细节解析,避免入坑(获取后端的数据类型自动转变)
  • VisionPro、Mac、IPad、如何连接Windows 文件互传
  • YOLOv8-ultralytics-8.2.103部分代码阅读笔记-loss.py
  • 深入探索 CnosDB 可观测性最佳实践:Metrics
  • 架构师:Dubbo 服务请求失败处理的实践指南
  • 蓝桥杯真题——砍竹子(C语言)
  • 如何在Spark中使用gbdt模型分布式预测
  • 中国电信张宝玉:城市数据基础设施建设运营探索与实践
  • 【前端】JavaScript 中的 this 与全局对象 window深度解析
  • diffusion model: prompt-to-prompt 深度剖析
  • 设计模式:15、生成器模式
  • TinyXML2的一些用法
  • dpwwn02靶场
  • 探讨播客的生态系统
  • 第 41 章 - Go语言 软件工程原则
  • 目标检测标注图像
  • 目标检测模型和图像分割模型
  • ES6 对象扩展全解析:属性简写、表达式、super 关键字等的深度应用
  • Qt5语法的connect指定多个重载信号槽函数中的具体某一个
  • Day6 洛谷 1426+1425+1424+1423+1422+1614+1634+1639
  • 基于Springboot + Vue开发的美食探索及分享平台