什么是UDP?
UDP(User Datagram Protocol,用户数据报协议)是一种无连接的网络传输协议,位于 OSI 模型的传输层(第四层),与 TCP(传输控制协议)同为互联网的核心协议之一。它具有以下特点:
无连接
- 发送数据前无需建立连接(如 TCP 的三次握手),直接发送数据包。
- 优点:低延迟,适用于实时应用(如视频流、语音通话)。
- 缺点:不保证数据到达或顺序
不可靠传输
- 不保证数据包:
- 顺序性(可能乱序到达)。
- 完整性(可能丢失)。
- 到达(无确认机制)
怎么在nodejs中使用UDP?
直接上代码:
服务端
// 创建udp *************************************************
const dgram = require("dgram");
const server = dgram.createSocket("udp4");
// 监听
server.on("message", (msg, rinfo) => {console.log(`接收到来自 ${rinfo.address}:${rinfo.port} 的消息: ${msg.toString()}`);setInterval(()=>{let t = Date.now()+""// t 必须是Buffer或字符串server.send(t, rinfo.port, rinfo.address, (err, bytes) => {console.log("发送:"+t)});},1000)
});
// 监听建立连接
server.on("listening", () => {console.log("server:" + server.address().port);});
// 注册UDP服务
server.bind("5000");
客户端
// 创建udp *************************************************
const dgram = require("dgram");
const client = dgram.createSocket("udp4");// 监听建立连接
client.on("listening", () => {console.log("udp:" + client.address().port);});
// 注册UDP服务
client.bind(5001);// 向服务器发送消息
setTimeout(()=>{client.send("你好,服务器!","5000","192.168.1.64",(err,bytes)=>{if(err){console.log("消息发送失败!")client.close();return;}client.on('message', (msg, rinfo) => {console.log(`接收到来自服务器 ${rinfo.address}:${rinfo.port} 的响应: ${msg.toString()}`);});})
},5000)
用node启动后