1. 程式人生 > >Node.js使用UDP通訊

Node.js使用UDP通訊

Node.js 的 dgram 模組可以方便的建立udp服務,,以下是使用 dgram模組建立的udp服務和客戶端的一個簡單例子。

一、建立 UDP Server

var dgram = require('dgram');
//建立 udp server
var udp_server = dgram.createSocket('udp4');
udp_server.bind(5678); // 繫結埠

// 監聽埠
udp_server.on('listening', function () {
    console.log('udp server linstening 5678.');
})

//接收訊息
udp_server.on('message', function (msg, rinfo) {
    strmsg = msg.toString();
    udp_server.send(strmsg, 0, strmsg.length, rinfo.port, rinfo.address); //將接收到的訊息返回給客戶端
    console.log(`udp server received data: ${strmsg} from ${rinfo.address}:${rinfo.port}`)
})
//錯誤處理
udp_server.on('error', function (err) {
    console.log('some error on udp server.')
    udp_server.close();
})

二、建立 UDP Client

var dgram = require('dgram');
var udp_client = dgram.createSocket('udp4'); 

udp_client.on('close',function(){
    console.log('udp client closed.')
})

//錯誤處理
udp_client.on('error', function () {
    console.log('some error on udp client.')
})

// 接收訊息
udp_client.on('message', function (msg,rinfo) {
    console.log(`receive message from ${rinfo.address}:${rinfo.port}:${msg}`);
})

//定時向伺服器傳送訊息
setInterval(function(){
    var SendBuff = 'hello 123.';
    var SendLen = SendBuff.length;
    udp_client.send(SendBuff, 0, SendLen, 5678, '172.30.20.10'); 
},3000);