手机客户端建立和服务器端连接四次挥手,TCP释放出来联接的操

lxf2023-04-21 22:48:01

携手并肩写作,一起成长!这个是我参加「AdminJS · 8 月更文考验」第15天,查看更多活动规则

针对前端工程师,http品质是大家最多接触到的通讯服务,有时候也会使用一些类似对话框的长链接运用,这种运用不是根据HTTP研发的,HTTP是无状态的短链接,提到长连接是否最先都会想到TCP,TCP是有状态长连接协议。TCP和HTTP都是有一定联接的意思是通讯之前需要建立联系,但在互联网全球还有一种无连接协议内容UDP,今天我们就来了解一下TCP在nodejs中的运用。

net

TCP(传输控制协议)协议书

TCP合同的特性如下所示:

  • TCP是面向连接的传输层协议
  • TCP是可信赖的传输技术,可以确保数据信息不容易遗失
  • TCP是一对一的相连的
  • TCP可以提供全双工通信(通讯彼此可以随意情况下传送数据)
  • TCP传送数据主要面向字节流的
  • TCP是三次握手的接口方式,四次挥手的中断连接方法
    • 三次握手:手机客户端推送联接要求,服务器端允许联接请问一下并返回手机客户端,手机客户端建立和服务器端连接

手机客户端建立和服务器端连接四次挥手,TCP释放出来联接的操

  • 四次挥手,TCP释放出来联接的操作流程大概如下所示:Client告知Server再也不会传送数据=》Server告知Client知道等着我推送完现阶段数据信息就关掉=》Server端推送完现阶段数据信息释放出来联接,等候Client确定=》Client确定释放出来联接,TCP联接关掉

手机客户端建立和服务器端连接四次挥手,TCP释放出来联接的操

  • TCP运用场所:网页访问,闲聊程序流程,电子邮件等必须保证数据可靠性的使用

nodejs里的net应用

Node.js Net 控制模块提供了一些用以最底层的网络通讯的实用工具,包括了建立网络服务器/客户端方式。

  • 服务器端,关键步骤为:建立服务项目,监视联接,传送数据,联接断掉
const net = require("net");

/**
 * 服务器端建立联接服务项目
 */
const server = net.createServer((socket) => {
  //监视关掉手机客户端联接
  socket.on("end", () => {
    console.log("手机客户端关掉联接!");
  });
  //接收到的信息是二进制流数据信息
  socket.on("data", (data) => {
    console.log("data: ", data.toString());
  });
  //向每一个手机客户端传送数据
  socket.write("hello, I am server!", () => {});
});

// 设定与此同时最大连接数
server.setMaxListeners = 99;

server.on("connection", () => {
  console.log("一个新的手机客户端已连接");
});

server.listen(4000, () => {
  console.log("server is listening");
});

  • 手机客户端,关键步骤为:联接服务项目,监视服务器端数据信息,向服务器端传送数据,联接断掉
const net = require('net');

const client = net.createConnection(4000,'localhost')

//监视服务项目发送的数据信息
client.on('data',(data)=>{
    console.log('手机客户端:已经成功联接服务器端!');
    console.log('服务器端发送的数据信息----: ', data.toString());
})

client.on('connect', function(){
    console.log('手机客户端:已与服务器端建立联系');
});
client.on('close', function(data){
    console.log('手机客户端:联接断掉');
});
let index = 0;
setInterval(()=>{
    if(index === 9){
        //断掉与服务器连接
        client.end('10条数据信息早已推送完喽!')
        return
    }
    //手机客户端给服务器端传送数据
    client.write(`向手机客户端推送第${index}条数据信息`)
    index   
},1000)
// client.end(JSON.stringify({name:"wo shi bao bao a!"}))

汇总

针对TCP协议书常用当然就是实时聊天系统软件,此外根据HTTP合同的运用我们能够觉得底层协议是TCP应是HTTP都是基于TCP的基础上的,了解TCP其实对于我们前端工程师尤为重要。