node 之 接入udp通信(一) 基础篇

38 阅读1分钟

最近刚好遇到需求需要对接硬件的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);

启动后监听到发送的消息,以及给设备发送的消息设备接收情况

图片