nodejs dgram模块广播+组播的实现示例


Posted in NodeJs onNovember 04, 2019

本机IP地址是10.8.93.80,

nodejs dgram模块广播+组播的实现示例

具体信息如上图所示

根据计算得知我的广播地址应该是10.8.93.255,不是10.8.93.254哦。

其它内容就直接上代码

server.js

const dgram = require('dgram');
const server = dgram.createSocket('udp4');
const multicastAddr = '224.100.100.100';

server.on('close', () => {
 console.log('socket已关闭');
});

server.on('error', (err) => {
 console.log(err);
});

server.on('listening', () => {
 console.log('socket正在监听中...');
 server.addMembership(multicastAddr); // 不写也行
 server.setBroadcast(true);
 server.setMulticastTTL(128);
 setInterval(() => {
  sendMsg();
 }, 1500);
});

server.on('message', (msg, rinfo) => {
 console.log(`receive client message from ${rinfo.address}:${rinfo.port}`);
});

function sendMsg() {
 console.log('sending');
 server.send('大家好啊,我是服务端广播消息', 8061, '10.8.93.255');
 server.send('大家好啊,我是服务端组播消息', 8061, multicastAddr);
}

server.bind('8060'); // 此处填写IP后无法组播

client.js

const dgram = require('dgram');
const client = dgram.createSocket('udp4');
const multicastAddr = '224.100.100.100';

client.on('close', () => {
 console.log('socket已关闭');
});

client.on('error', (err) => {
 console.log(err);
});
client.on('listening', () => {
 console.log('socket正在监听中...');
 client.addMembership(multicastAddr);
});
client.on('message', (msg, rinfo) => {
 console.log(`receive server message from ${rinfo.address}:${rinfo.port}:${msg}`);
});
client.bind(8061); // 此处必须绑定自己的局域网IP或者不填,填localhost是不行的

代码中我的服务器是绑定的8060端口,向广播地址的8061端口发送广播,故意改成不一样的是为了本机的客户端也能够接收试试,不然不就端口占用了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
nodejs教程之制作一个简单的文章发布系统
Nov 21 NodeJs
nodejs微信公众号支付开发
Sep 19 NodeJs
用nodejs搭建websocket服务器
Jan 23 NodeJs
NodeJS基础API搭建服务器详细过程记录
Apr 01 NodeJs
详解使用nodeJs安装Vue-cli
May 17 NodeJs
nodejs前端自动化构建环境的搭建
Jul 26 NodeJs
ubuntu编译nodejs所需的软件并安装
Sep 12 NodeJs
Nodejs调用WebService的示例代码
Sep 29 NodeJs
Nodejs异步流程框架async的方法
Jun 07 NodeJs
Nodejs环境实现socket通信过程解析
Jul 03 NodeJs
浅谈JS和Nodejs中的事件驱动
May 05 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 #NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 #NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 #NodeJs
Nodejs监控事件循环异常示例详解
Sep 22 #NodeJs
详解利用nodejs对本地json文件进行增删改查
Sep 20 #NodeJs
nodejs实现聊天机器人功能
Sep 19 #NodeJs
图解NodeJS实现登录注册功能
Sep 16 #NodeJs
You might like
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
PHP产生不重复随机数的5个方法总结
2014/11/12 PHP
php获取远程文件内容的函数
2015/11/02 PHP
js word表格动态添加代码
2010/06/07 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
鼠标焦点离开文本框时验证的js代码
2013/07/19 Javascript
js图片延迟技术一般的思路与示例
2014/03/20 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
基于vue2.0+vuex+localStorage开发的本地记事本示例
2017/02/28 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
轻松掌握python设计模式之策略模式
2016/11/18 Python
Python中字符串的修改及传参详解
2016/11/30 Python
详解Python 装饰器执行顺序迷思
2018/08/08 Python
详解PyCharm配置Anaconda的艰难心路历程
2018/08/13 Python
Python requests模块实例用法
2019/02/11 Python
Python for循环与range函数的使用详解
2019/03/23 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
教师学习培训邀请函
2014/02/04 职场文书
高一军训的心得体会
2014/09/01 职场文书
产品委托授权书范本
2014/09/16 职场文书
员工评语范文
2014/12/31 职场文书
教师节表彰会主持词
2015/07/06 职场文书
工作一年自我鉴定
2019/06/20 职场文书