Node.js之如何構(gòu)建UDP服務(wù)
UDP簡介
UDP又稱用戶數(shù)據(jù)包協(xié)議,它和TCP一樣屬于網(wǎng)絡(luò)傳輸層。
與TCP不同的是,它不是面向連接的,只需要一個(gè)套接字就可以與多個(gè)UDP服務(wù)通信。
它提供的信息傳輸服務(wù)雖然簡單不可靠,并且在網(wǎng)絡(luò)差的情況存在丟包問題,但是由于它無需連接,資源消耗低,所以常常應(yīng)用在一些偶爾丟包也不會(huì)產(chǎn)生嚴(yán)重影響的場景下。
例如音頻視頻,DNS服務(wù)等。
服務(wù)端(server.js)
廢話不多講,直接上實(shí)例:
const dgram = require("dgram");
const server = dgram.createSocket("udp4");
server.on("message", (msg, rinfo) => {
console.log("rinfo.address = " + rinfo.address);
console.log("rinfo.port = " + rinfo.port);
console.log(msg.toString());
});
server.on("listening", () => {
console.log("address:" + server.address().address);
console.log("port:" + server.address().port);
});
server.bind("41234");我們使用dgram包的createSocket方法來創(chuàng)建一個(gè)udp服務(wù),其實(shí)我們即可以用它做服務(wù)端,也可以用來作客戶端。
然后綁定listening事件,當(dāng)服務(wù)啟動(dòng),就會(huì)觸發(fā)監(jiān)聽。
然后綁定message事件,當(dāng)有客戶端消息發(fā)送過來的時(shí)候就會(huì)觸發(fā),發(fā)送過來的message是一個(gè)buffer
最后調(diào)用bind方法,綁定數(shù)據(jù)傳輸端口。
客戶端(client.js)
廢話不多講,直接上代碼:
const dgram = require("dgram");
const client = dgram.createSocket("udp4");
client.send("hello, nodejs", 41234, "localhost", (err, bytes) => {
console.error(err);
console.log(bytes);
client.close();
client.on("close", () => {
console.log("close");
});
});客戶端調(diào)用send方法來發(fā)送消息,參數(shù)分別代表,要發(fā)送的信息,端口,地址,以及回調(diào)。
運(yùn)行server.js 和client.js進(jìn)行測試。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何自定義node版本,實(shí)現(xiàn)node多版本控制方式
這篇文章主要介紹了如何自定義node版本,實(shí)現(xiàn)node多版本控制方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
NodeJS模塊與ES6模塊系統(tǒng)語法及注意點(diǎn)詳解
這篇文章主要給大家介紹了關(guān)于NodeJS模塊與ES6模塊系統(tǒng)語法及注意點(diǎn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01
輕松創(chuàng)建nodejs服務(wù)器(10):處理上傳圖片
這篇文章主要介紹了輕松創(chuàng)建nodejs服務(wù)器(10):處理上傳圖片,本文是系列文章的最后一篇,包含了一個(gè)完整的處理上傳圖片的例子,需要的朋友可以參考下2014-12-12

