美文网首页
nodejs系列-TCP协议

nodejs系列-TCP协议

作者: 写前端的大叔 | 来源:发表于2020-03-15 17:23 被阅读0次

    学海无涯,知识是永远学不完的,前端的知识还没完全搞透,又想来折腾下nodejs了,不管了,先广度,然后再深度,前端体系的知识再怎么着也得都有所了解,首先就从nodejsTCP来开始学。通过写文章来记录学习的点点滴滴,方便日后回顾的时候更容易理解。

    什么是TCP

    TCP是一种传输层协议,它可以让你将数据从一台计算机完整有序的传输到另一台计算机。基于这样的特点,我们常见的HTTP都是基于TCP协议的。

    特点

    • 面向字节:TCP对消息格式没有严格的约束,对字符以及字符编码是完全远程的。
    • 可靠性:由于TCP是基于确认和超时实现一系列的机制来达到可靠性的要求,保证了连接之间的可靠性。
    • 流控件:TCP是通过一种叫流控制的方式来确保两点之间传输数据的平衡。
    • 拥堵控制:TCP有一种内置的机制能够控制数据包的延迟率及丢包率不会太高,以此来确保服务的质量。

    TCP连接由服务端和客户端组成,这里通过nodejsAPI来实现一个简单的聊天程序,在nodejs中创建TCP服务端和客户端使用的是net包下面的API,在使用的时候,需要先通过const net = require('net')net引入进来。

    服务端

    服务端是通过createServer来创建一个服务器,然后再使用listen来绑定一个端口用于监听。服务端的代码如下所示:

    const net = require('net')
    let count = 0;//用于记录连接的个数
    module.exports = function(){
        let server = net.createServer((conn) => {
            conn.setEncoding('utf8');
            console.log('连接成功');
            count ++;
            conn.write('连接成功,一共有有'+count+'人在线');
            conn.on('close',() => {
                count --;
                console.log('一共有有'+count+'人在线')
            })
    
            conn.on('end',() => {
                console.log('结束')
            })
    
            conn.on('data',(data) => {
                data = data.replace('\r\n','');
                console.log(data);
            })
        })
        server.listen(3000,() => {
            console.log('开始监听')
        })
    }
    

    conn.setEncoding('utf8');用于设置字符编码。
    close:用于监听客户端关闭连接。
    end:结束连接时触发。
    data:用于接收客户端发送的数据。

    创建完后服务端后,开始可以使用telnet进行连接,打开系统的终端,输入telnet命令,再输入telnet 127.0.0.1 3000进行连接,连接成功后将提示成功的信息,如下所示:

    telnet.png
    在终端中输入文字,然后再按回车,在服务端可以接收客户端输入的文字信息。

    客户端

    客户端主要是使用createConnection进行连接,在该方法中传入服务端的端口号和IP地址,就可以进行连接服务端了。如下所示:

    const net = require('net')
    module.exports = function(){
        let client = net .createConnection(3000,'127.0.0.1');
        client.setEncoding('utf8');
        client.on('connect',() =>{
            client.write('我是客户端001');
        })
    }
    

    createConnection:创建连接
    connect:连接成功后执行该回调。
    个人博客

    相关文章

      网友评论

          本文标题:nodejs系列-TCP协议

          本文链接:https://www.haomeiwen.com/subject/ntieehtx.html