Nodejs实现的一个简单udp广播服务器、客户端


Posted in NodeJs onSeptember 25, 2014

nodejs发送udp广播还是蛮简单的,我们先写个服务器用于接收广播数据,代码如下:

var dgram = require("dgram");
var server = dgram.createSocket("udp4");
server.on("error", function (err) {

  console.log("server error:\n" + err.stack);

  server.close();

});
server.on("message", function (msg, rinfo) {

  console.log("server got: " + msg + " from " +

    rinfo.address + ":" + rinfo.port);

});
server.on("listening", function () {

  var address = server.address();

  console.log("server listening " +

      address.address + ":" + address.port);

});
server.bind(41234);

然后写个客户端程序,发送广播消息,代码如下:

var dgram = require("dgram");
var socket = dgram.createSocket("udp4");

socket.bind(function () {

  socket.setBroadcast(true);

});
var message = new Buffer("Hi");

socket.send(message, 0, message.length, 41234, '255.255.255.255', function(err, bytes) {

  socket.close();

});

这里需要注意的是socket.setBroadcast(true);必须在绑定socket成功后才能调用,否则会报Error: setBroadcast EBADF的错误。

客户端发送广播还是蛮简单的,设置好需要发送的数据和端口等信息就OK了。

NodeJs 相关文章推荐
NodeJS 模块开发及发布详解分享
Mar 07 NodeJs
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
Sep 26 NodeJs
详谈nodejs异步编程
Dec 04 NodeJs
基于Nodejs利用socket.io实现多人聊天室
Feb 22 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
Nodejs实现多房间简易聊天室功能
Jun 20 NodeJs
nodejs body-parser 解析post数据实例
Jul 26 NodeJs
nodejs结合Socket.IO实现的即时通讯功能详解
Jan 12 NodeJs
nodejs更改项目端口号的方法
May 13 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
NodeJs生成sitemap站点地图的方法示例
Jun 11 NodeJs
NodeJs使用webpack打包项目的方法详解
Feb 28 NodeJs
Nodejs异步回调的优雅处理方法
Sep 25 #NodeJs
nodejs命令行参数处理模块commander使用实例
Sep 17 #NodeJs
nodejs npm package.json中文文档
Sep 04 #NodeJs
使用Nodejs开发微信公众号后台服务实例
Sep 03 #NodeJs
Nodejs+express+html5 实现拖拽上传
Aug 08 #NodeJs
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
Aug 03 #NodeJs
NodeJS学习笔记之网络编程
Aug 03 #NodeJs
You might like
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
asp javascript 实现关闭窗口时保存数据的办法
2007/11/24 Javascript
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
Vue 项目部署到服务器的问题解决方法
2017/12/05 Javascript
webstorm添加*.vue文件支持
2018/05/08 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
[00:12]2018DOTA2亚洲邀请赛 Sccc亮相SOLO赛,今年他又会有什么样的战绩?
2018/04/06 DOTA
python getopt 参数处理小示例
2009/06/09 Python
详解在Python中处理异常的教程
2015/05/24 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
python序列化与数据持久化实例详解
2019/12/20 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
2020/07/01 Python
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
市场拓展计划书
2014/05/03 职场文书
2015年信访工作总结
2015/04/07 职场文书
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL