Nodejs:UDP极简入门例子

news/2024/7/5 21:24:51

模块概览

dgram模块是对UDP socket的一层封装,相对net模块简单很多,下面看例子。

文本同步收录于GitHub主题系列《Nodejs学习笔记》

UPD客户端 vs UDP服务端

首先,启动UDP server,监听来自端口33333的请求。

server.js

// 例子:UDP服务端
var PORT = 33333;
var HOST = '127.0.0.1';

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

server.on('listening', function () {
    var address = server.address();
    console.log('UDP Server listening on ' + address.address + ":" + address.port);
});

server.on('message', function (message, remote) {
    console.log(remote.address + ':' + remote.port +' - ' + message);
});

server.bind(PORT, HOST);
复制代码

然后,创建UDP socket,向端口33333发送请求。

client.js

// 例子:UDP客户端
var PORT = 33333;
var HOST = '127.0.0.1';

var dgram = require('dgram');
var message = Buffer.from('My KungFu is Good!');

var client = dgram.createSocket('udp4');

client.send(message, PORT, HOST, function(err, bytes) {
    if (err) throw err;
    console.log('UDP message sent to ' + HOST +':'+ PORT);
    client.close();
});
复制代码

运行 server.js。

node server.js
复制代码

运行 client.js。

➜  2016.12.22-dgram git:(master) ✗ node client.js 
UDP message sent to 127.0.0.1:33333
复制代码

服务端打印日志如下

UDP Server listening on 127.0.0.1:33333
127.0.0.1:58940 - My KungFu is Good!
复制代码

广播

通过dgram实现广播功能很简单,服务端代码如下。

var dgram = require('dgram');
var server = dgram.createSocket('udp4');
var port = 33333;

server.on('message', function(message, rinfo){
    console.log('server got message from: ' + rinfo.address + ':' + rinfo.port);
});

server.bind(port);
复制代码

接着创建客户端,向地址'255.255.255.255:33333'进行广播。

var dgram = require('dgram');
var client = dgram.createSocket('udp4');
var msg = Buffer.from('hello world');
var port = 33333;
var host = '255.255.255.255';

client.bind(function(){
    client.setBroadcast(true);
    client.send(msg, port, host, function(err){
        if(err) throw err;
        console.log('msg has been sent');
        client.close();
    });
});
复制代码

运行程序,最终服务端打印日志如下

➜  2016.12.22-dgram git:(master) ✗ node broadcast-server.js
server got message from: 192.168.0.102:61010
复制代码

相关链接

https://nodejs.org/api/dgram.html

《Nodejs学习笔记》


http://www.niftyadmin.cn/n/3743470.html

相关文章

微型计算机技术及应用实验,微型计算机技术及应用实验介绍.docx

《微型计算机技术及应用》实验报告学号: *** 姓名: ****** 班级: 计算机2014 信息科学与工程学院实验1:汇编语言——时钟程序程序功能显示目前的时间并进行修改。汇编代码sseg segment para stack stackdw 100h dup(0) ;初始化堆栈…

internet是一个计算机网络的网络,网络之间要求,Internet是一个计算机网络的网络,网络之间要求( ) 。...

摘要:算机《王西厢》中崔莺莺赖简的原因有()。网络网络“回也,其心三月不违仁;其余,则日月至焉而已矣。”孔子认为()。要求中庸之道的中庸指的是()。...算机《王西厢》中崔莺莺赖简的原因有()。个计自诚明,谓之性;自明诚,谓之教。诚则明矣,明则诚矣。这段话出自()。…

计算机无法连接到手机热点,电脑搜不到手机的热点是为什么_电脑无法发现手机热点的处理方法...

电脑在我们日常生活中被广泛使用,但是使用久了之后难免会遇到各种问题。例如最近就有小伙伴跟小编反映说,自己的电脑出现了搜不到手机的热点的情况,这是怎么回事呢?我们又该如何来解决呢?对此今天本文就来为大家分享关…

[转载]深入理解Python异步编程(上)

原文出处: 阿驹 前言 很多朋友对异步编程都处于“听说很强大”的认知状态。鲜有在生产项目中使用它。而使用它的同学,则大多数都停留在知道如何使用 Tornado、Twisted、Gevent 这类异步框架上,出现各种古怪的问题难以解决。而且使用了异步框…

计算机网络安全人为因素,计算机网络安全问题

计算机网络安全是指利用网络管理控制和技术措施,保证在一个网络环境里,数据的保密性、完整性及可使用性受到保护。计算机网络安全包括两个方面,即物理安全和逻辑安全。物理安全指系统设备及相关设施受到物理保护,免于破坏、丢失等…

马来亚大学的计算机专业相当国内哪个水平,【马来亚大学和国内985对比】 - 马来西亚留学联盟...

马来亚大学和国内985对比哪个好是最近很多学生都比较好奇的问题之一。作为马来西亚历史最悠久的高等教育学府,马来亚大学也是世界顶尖的研究型大学,在医学以及文理科等方面都有着十分突出的表现。一直以来马来亚大学在国际上的排名都十分突出&#xff0c…

oracle数据库shell备份脚本exp方式

1、root用户下创建备份路径: mkdir /opt/backup chown oralce:oinstall /opt/backup 2、oracle用户创建备份脚本路径: mkdir /opt/app/oracle/bin cd /opt/app/oracle/bin 3、创建备份脚本3.1 第一种方式 vi backup.sh #!/bin/sh export ORACLE_BASE/opt…

计算机语言缺省,《死水微澜》语言缺省研究

摘要:文学语言可以运用揭示语言表现手段的语言学理论来赏析研究.《死水微澜》作为一部优秀的小说,其璀璨的语言艺术一直备受人们关注,也得到了广泛地研究,但对其从语言缺省的角度来进行分析和鉴赏还没有得到足够的重视. 本文从语言缺省的角度来探讨和分析《死水微澜…