国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

node.js基于dgram數據報模塊創建UDP服務器和客戶端操作示例

2024-05-06 15:44:22
字體:
來源:轉載
供稿:網友

本文實例講述了node.js基于dgram數據報模塊創建UDP服務器和客戶端操作。分享給大家供大家參考,具體如下:

node.js中 dgram 模塊提供了udp數據包的socket實現,可以方便的創建udp服務器和客戶端。

一、創建UDP服務器和客戶端

服務端:

const dgram = require('dgram');//創建upd套接字//參數一表示套接字類型,'udp4' 或 'udp6'//參數二表示事件監聽函數,'message' 事件監聽器let server = dgram.createSocket('udp4');//綁定端口和主機地址server.bind(8888, '127.0.0.1');//有新數據包被接收時,觸發server.on('message', function (msg, rinfo) {  //msg表示接收到的數據  //rinfo表示遠程主機的地址信息  console.log('接收到的數據 : ', msg.toString());  console.log(rinfo);  //發送數據,如果發送數據之前沒有綁定過地址和端口,則會隨機分配端口。  //參數一表示,要發送的數據 string或buffer  //參數二表示,發送數據的偏移量  //參數三表示,發送數據的字節數  //參數四表示,目標端口  //參數五表示,目標主機名或IP地址  //參數六表示,消息發送完畢后的回調函數  server.send('你好', 0, 6, rinfo.port, rinfo.address);});//開始監聽數據包時,觸發server.on('listening', function () {  console.log('監聽開始');});//使用 close() 關閉socket之后觸發server.on('close', function () {  console.log('關閉');});//發生錯誤時觸發server.on('error', function (err) {  console.log(err);});

客戶端:

const dgram = require('dgram');let client = dgram.createSocket('udp4');client.bind(3333, '127.0.0.1');client.on('message', function (msg, rinfo) {  console.log(msg.toString());});client.on('error', function (err) {  console.log(err);});//給8888端口的UDP發送數據client.send('你好', 0, 6, 8888, '127.0.0.1', function (error, bytes) {  if (error) {    console.log(error);  }  console.log(`發送了 ${bytes} 個字節數據`);});

udp中服務器與客戶端并沒有嚴格的劃分,既可以作為服務器接收數據處理數據,也可以像客戶端一樣請求數據,彼此之間相對獨立。

二、通過UDP服務器進行廣播

我們知道一個IP地址是由網絡地址和主機地址組成的,而廣播IP的主機位全為1,當我們向一個廣播IP發送數據時,則該數據將分發給所有同網段的主機。

服務端:

const dgram = require('dgram');let server = dgram.createSocket('udp4');//注意setBroadcast()必須在綁定socket成功后才能調用server.bind(8888, '192.168.1.102', function () {  //啟用廣播  server.setBroadcast(true);  server.setTTL(128);});server.on('message', function (msg, rinfo) {  console.log(msg.toString());  console.log(rinfo);});let buf = Buffer.from('廣播數據');setInterval(function () {  //向廣播IP發送數據  //注意客戶端監聽的端口要與這里的端口一致,不然無法接收到廣播  server.send(buf, 0, buf.length, 6666, '192.168.1.255', function (error, bytes) {    if (error) {      console.log(error);    }    console.log(`發送 ${bytes} 個字節數據`);  });}, 3000);            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 井冈山市| 营山县| 克东县| 襄汾县| 屯留县| 云龙县| 上栗县| 凉城县| 九江市| 章丘市| 平凉市| 垣曲县| 潍坊市| 蒙阴县| 红河县| 喀喇沁旗| 平远县| 普定县| 康平县| 屏边| 高密市| 新乐市| 姚安县| 三原县| 梓潼县| 上饶市| 淮南市| 措美县| 临夏市| 怀化市| 本溪市| 黑山县| 江川县| 盐源县| 全州县| 屯留县| 黄冈市| 格尔木市| 靖远县| 筠连县| 巩留县|