在 Node.js 中,UDP(User Datagram Protocol)是一种面向无连接的通信协议,用于在网络上发送和接收数据。Node.js 提供了 dgram 模块,用于创建 UDP 服务器和客户端。

以下是一些关于 Node.js 中 UDP/Datagram 的基本用法:

1. 创建 UDP 服务器:
const dgram = require('dgram');

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

server.on('listening', () => {
  const address = server.address();
  console.log(`UDP Server listening on ${address.address}:${address.port}`);
});

server.on('message', (msg, rinfo) => {
  console.log(`Received message: ${msg} from ${rinfo.address}:${rinfo.port}`);
});

server.bind(3000);  // 绑定到端口 3000

2. 创建 UDP 客户端:
const dgram = require('dgram');

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

const message = Buffer.from('Hello, UDP server!');

client.send(message, 3000, 'localhost', (err) => {
  if (err) {
    console.error(err);
    client.close();
  } else {
    console.log('Message sent to the server');
  }
});

3. 多播(Multicast):

UDP 还支持多播,允许将数据发送到多个目标。
const dgram = require('dgram');

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

server.on('listening', () => {
  server.addMembership('239.255.255.250');  // 添加到多播组
  const address = server.address();
  console.log(`UDP Server listening on ${address.address}:${address.port}`);
});

server.on('message', (msg, rinfo) => {
  console.log(`Received multicast message: ${msg} from ${rinfo.address}:${rinfo.port}`);
});

server.bind(1900, '0.0.0.0');  // 绑定到端口 1900 和所有可用网络接口

4. 详细配置:

可以通过设置 options 参数来详细配置 UDP 客户端和服务器,例如允许广播、设置 TTL(Time To Live)等。
const dgram = require('dgram');

// UDP 服务器配置
const server = dgram.createSocket({
  type: 'udp4',
  reuseAddr: true
});

// UDP 客户端配置
const client = dgram.createSocket({
  type: 'udp4',
  reuseAddr: true,
  broadcast: true
});

以上是基本的 UDP 服务器和客户端的用法。UDP 适用于需要快速传输数据但不要求可靠性的场景,如音视频传输、实时游戏等。在实际应用中,你可以根据具体需求使用 UDP 来满足不同的通信需求。


转载请注明出处:http://www.zyzy.cn/article/detail/4785/Node.js