Node.js

Node.js 知识量:9 - 37 - 115

7.1 构建TCP服务><

TCP- 7.1.1 -

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP的主要作用是提供可靠的、有序的和错误校验的数据传输方式,以确保数据在网络中的可靠传输。

TCP协议通过以下机制实现可靠的数据传输:

  • 建立连接:在传输数据之前,TCP需要通过三次握手(3-way handshake)建立连接。这可以确保双方都准备好进行数据传输。

  • 数据的编号和排序:TCP对发送的数据进行编号,以便接收端能够按正确的顺序重新组合数据。

  • 流量控制:TCP使用滑动窗口机制进行流量控制,以防止接收端来不及处理接收到的数据。

  • 拥塞控制:当网络出现拥塞时,TCP会减慢发送数据的速度,以防止过多的数据在网络中造成拥塞。

  • 错误校验:TCP使用校验和(checksum)对数据进行错误校验,以确保数据的完整性。

创建TCP服务器端- 7.1.2 -

要在Node.js中创建TCP服务器端,可以使用Node.js的内置net模块。以下是一个简单的示例代码,用于创建一个TCP服务器:

const net = require('net');  
  
const server = net.createServer((socket) => {  
  console.log('客户端已连接');  
  
  socket.on('data', (data) => {  
    console.log('收到数据:', data.toString());  
    socket.write('已收到您的消息: ' + data.toString() + '\n');  
  });  
  
  socket.on('end', () => {  
    console.log('客户端已断开连接');  
  });  
});  
  
server.listen(9000, () => {  
  console.log('服务器已启动,监听端口9000');  
});

这个示例创建了一个TCP服务器,监听端口9000。当客户端连接到服务器时,服务器会打印一条消息,并在接收到客户端发送的数据时将数据打印到控制台,并将收到的消息回传给客户端。当客户端断开连接时,服务器也会打印一条相应的消息。

TCP服务的事件- 7.1.3 -

Node.js的TCP服务支持多种事件,这些事件可以更好地用于管理TCP连接。以下是Node.js TCP服务的一些常用事件:

  • data:当从客户端接收数据时触发。

  • end:当客户端关闭连接时触发。

  • error:当发生错误时触发。

  • close:当服务器或客户端关闭连接时触发。

  • secureConnection:当TLS/SSL加密连接被接受时触发(仅在使用TLS/SSL的服务器上)。

  • newConnection:当一个新的连接被接受时触发(在非流式服务器上)。

  • serverError:当在服务器上发生错误时触发。

  • timeout:当一个连接在接受数据之前超时时触发。

  • 半关闭:当服务器向客户端发送FIN包后,服务器等待来自客户端的FIN包时触发。

  • remoteAddress:当一个客户端连接到服务器时,该事件会提供客户端的IP地址和端口号。