c语言编程笔录

首页 >   > 笔记大全

笔记大全

Node中的TCP和UDP

更新时间:2023-07-13

了解TCP与UDP协议

TCP(传输控制协议)和UDP(用户数据报协议)是互联网通信中重要的两种协议。TCP与UDP的区别在于,TCP提供的是面向链接的有序数据传输服务,而UDP提供的是无序的数据传输服务,并不保证数据一定能够被接收方正确的接收。这两种协议都有各自的使用场景,需要根据实际需求进行选择。

使用Node实现TCP

在Node中,可以使用内置的Net模块来创建TCP服务器和客户端。以下代码是一个简单的TCP服务器的实现,可以接收客户端发送的消息并将其打印到控制台上:

const net = require('net');

const server = net.createServer((socket) => {
  console.log('客户端已连接');

  socket.on('data', (data) => {
    console.log(`收到消息:${data}`);
  });

  socket.on('close', () => {
    console.log('客户端已断开连接');
  });
});

server.listen(8888, () => {
  console.log('服务器已启动');
});

使用Node实现UDP

与TCP不同,UDP是无连接的,因此在Node中创建UDP服务器和客户端时需要使用内置的dgram模块。以下代码是一个简单的UDP服务器,可以接收客户端发送的消息并将其打印到控制台上:

const dgram = require('dgram');

const server = dgram.createSocket('udp4');

server.on('listening', () => {
  console.log('服务器已启动');
});

server.on('message', (msg, rinfo) => {
  console.log(`收到消息:${msg},来源地址:${rinfo.address},来源端口号:${rinfo.port}`);
});

server.bind(8888);

使用TCP和UDP的注意事项

在实际使用中,需要注意以下几个问题:

  • TCP是面向链接的,因此在建立通信时需要进行“握手”等操作,而UDP没有这个过程,因此UDP的开销更小;
  • TCP是保证数据传输有序和正确的,但UDP虽然快速,但是并不能保证数据的正确性,使用中需要谨慎考虑;
  • TCP与UDP的端口号是独立的,在使用时需要注意使用不同的端口号来开启服务,避免互相冲突。