Node.js 构建 UDP 服务:dgram 模块实战指南

作者:终端旅客时间:2026-10-31 15:36:28浏览:311

本文介绍如何使用 Node.js 的 dgram 模块构建 UDP 服务端与客户端。通过 createSocket 创建套接字,利用 message 和 listening 事件处理数据收发,并结合 bind 方法指定端口。示例代码展示了完整的 UDP 通信流程,适用于对实时性要求高且可容忍少量丢包的场景。

UDP 简介

UDP 全称为用户数据包协议,与 TCP 同属于网络传输层协议。

与 TCP 不同,UDP 并非面向连接的协议,仅需一个套接字即可与多个 UDP 服务进行通信。

尽管 UDP 提供的信息传输服务较为简单且不可靠,在网络状况不佳时可能出现丢包,但由于其无需建立连接,资源消耗极低,因此常被应用于那些偶尔丢包也不会造成严重后果的场景。

典型的适用场景包括音频视频传输、DNS 服务等。

服务端实现 (server.js)

直接通过实例进行说明:

const dgram = require("dgram");
 
const server = dgram.createSocket("udp4");
 
server.on("message", (msg, rinfo) => {
  console.log("rinfo.address =  " + rinfo.address);
  console.log("rinfo.port =  " + rinfo.port);
  console.log(msg.toString());
});
 
server.on("listening", () => {
  console.log("address:" + server.address().address);
  console.log("port:" + server.address().port);
});
 
server.bind("41234");

我们使用 dgram 包的 createSocket 方法来创建一个 UDP 服务,该对象既可用于服务端,也可用于客户端。

接着绑定 listening 事件,当服务启动成功时,该事件将被触发。

随后绑定 message 事件,当有客户端消息发送过来时触发,此时接收到的 message 是一个 buffer 对象。

最后调用 bind 方法,绑定数据传输端口。

客户端实现 (client.js)

直接通过代码展示:

const dgram = require("dgram");
 
const client = dgram.createSocket("udp4");
 
client.send("hello, nodejs", 41234, "localhost", (err, bytes) => {
  console.error(err);
  console.log(bytes);
  client.close();
  client.on("close", () => {
    console.log("close");
  });
});

客户端调用 send 方法来发送消息,其参数分别代表要发送的信息内容、目标端口、IP 地址以及回调函数。

运行 server.js 和 client.js 进行功能测试。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

作者最新文章