最近刚好遇到需求需要对接硬件的udp协议 这里就说下node中是怎么对接的
1. 首先udp的推送消息分为 广播 跟 组播 两种,那么怎么区分两者呢(来源google)
-
UDP组播(UDP Multicast)是指将数据报发送给一组特定的目标设备,这些设备通过共享相同的组播IP地址进行通信。组播传输适用于发送给特定组成员的数据,这些组成员可以在不同的网络节点上。
-
广播(Broadcast)是指将数据报发送给同一网络中的所有设备,目标地址为广播地址。广播传输适用于向同一网络中的所有设备广播消息。
简单点来说就是,组播 需要大家进一个空间内由一方发送消息,空间内人都可以听到(一对多),广播就是直接将消息发给接收方(一对一)
这里由于是由中控设备给我们发送消息,当然就选择了广播方式,下面就说下node中怎么实现接收发送广播
const dgram = require("node:dgram");
const server = dgram.createSocket("udp4");
// 发生异常时触发
server.on("error", (err) => {
console.log(`error:\n${err.stack}`);
server.close();
});
// 收到消息时触发
server.on("message", (msg, rinfo) => {
// 打印收到的消息、对方地址及端口号
console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
});
// 启动监听时触发
server.on("listening", () => {
const address = server.address();
console.log(`server listening ${address.address}:${address.port}`);
// 向对方发送消息
server.send(`send test`, "1234", "127.0.0.1");
});
// 自身接收广播,发送广播的端口号
server.bind(8234);
启动后监听到发送的消息,以及给设备发送的消息设备接收情况