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

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

javascript 复制代码
//获取模块
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

javascript 复制代码
//获取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();
})
相关推荐
子兮曰6 小时前
AI Agent 完整入门指南:从 LLM 到生产落地的 30+ 个核心概念
前端·后端·agent
楚宝ovo6 小时前
新增一个 demo 子应用 - 微前端
前端
渔夫正在掘金6 小时前
Cordis 插件热插拔能力深度解析
后端·node.js
数据知道6 小时前
网络安全实战:子域名接管实战——从 CNAME 配置错误到完全控制
网络·安全·web安全·网络安全
lf13210277 小时前
用 JSON Schema 管装修节点记录:从照片台账到可校验工程数据
网络·数据库·人工智能·经验分享·物联网·json·智能家居
LayZhangStrive7 小时前
后端通识 - 远程服务调用RPC
网络·网络协议·rpc·sentinel·openfeign·远程服务调用
JarvanMo7 小时前
Dart 3.13:小版本,大动作
前端
纯粹的热爱7 小时前
Ubuntu 安装 Node.js 22.x(通过 NodeSource 官方源)
前端
Highcharts7 小时前
如何选择正确的图表:驱动理解和洞察力的三部分框架(第3部分)
前端·数据可视化
JavaGuide7 小时前
Github 史诗级故障,与此同时,Cursor 版「GitHub」正式上线!
前端·后端