node.js学习笔记之创建UDP服务器与客户端

server.js

/*创建简单的UDP服务器*/
var dgrm = require('dgram');
var server = dgrm.createSocket('udp4');//udp4为指定UDP通信的协议类型
server.on('message',function (msg, rinfo) {
    console.log('已收到客户端发送的数据:'+msg);
    console.log('客户端地址信息为&j',rinfo);
    var buf = new Buffer('确认信息:'+msg);
    //server.sent(Buffer,offset,length,port,address,[callback])
    server.send(buf,0,buf.length,rinfo.port,rinfo.address);
});
//当socket对象开始监听指定的端口和地址时,触发socket端口的listening事件
/*server.on('listening',function () {
    var address = server.address();
    console.log('服务器开始监听。地址信息为&j',address);
});*/
server.bind(3000,'localhost',function () {
    //bind方法中也可以不写回调函数,单独监听listening事件
    var address = server.address();
    console.log('服务器开始监听。地址信息为&j',address);
});
client.js:

/*创建简单的UDP客户端*/
var dgram = require('dgram');
var mess = new Buffer('您好');
var client = dgram.createSocket('udp4');
client.send(mess,0,mess.length,3000,'localhost',function (err, bytes) {
    if(err)
        console.log('发送数据失败');
    else {
        console.log('已发送%d字节数据',bytes);
    }
});
client.on('message',function (msg, rinfo) {
    console.log('已接收服务器发送的数据:%s',msg);
    console.log('服务器的地址为%s',rinfo.address);
    console.log('服务器所用端口为%s',rinfo.port);
    client.close();
});
client.on('close',function () {
    console.log('socket端口被关闭');
});

下面分别为服务器和客户端的运行效果:





server.js

/*使用socket端口的对象的unref方法允许应用程序的正常退出*/
var dgrm = require('dgram');
var server = dgrm.createSocket('udp4');//udp4为指定UDP通信的协议类型
server.on('message',function (msg, rinfo) {
    console.log('已收到客户端发送的数据:'+msg);
    console.log('客户端地址信息为&j',rinfo);
    var buf = new Buffer('确认信息:'+msg);
    //server.sent(Buffer,offset,length,port,address,[callback])
    server.send(buf,0,buf.length,rinfo.port,rinfo.address);
    //当客户端关闭10秒后关闭服务器
    setTimeout(function () {
        server.unref();
    },10000);
});
server.bind(3000,'localhost',function () {
    //bind方法中也可以不写回调函数,单独监听listening事件
    var address = server.address();
    console.log('服务器开始监听。地址信息为&j',address);
});

client.js

/*取消UDP客户端socket端口的关闭*/
var dgram = require('dgram');
var mess = new Buffer('您好');
var client = dgram.createSocket('udp4');
client.send(mess,0,mess.length,3000,'localhost',function (err, bytes) {
    if(err)
        console.log('发送数据失败');
    else {
        console.log('已发送%d字节数据',bytes);
    }
});
client.on('message',function (msg, rinfo) {
    console.log('已接收服务器发送的数据:%s',msg);
    console.log('服务器的地址为%s',rinfo.address);
    console.log('服务器所用端口为%s',rinfo.port);
    client.close();
});
client.on('close',function () {
    console.log('socket端口被关闭');
});


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
黑马Node.js学习笔记是一本关于Node.js学习资料,其中包含了关于模块化规范的内容。模块化规范是对代码进行模块化的拆分与组合时需要遵守的规则。在Node.js中,模块可以分为内置模块、自定义模块和第三方模块。内置模块是由Node.js官方提供的,例如fs、path、http等。自定义模块是用户创建的每个.js文件,可以通过require方法加载。第三方模块是由第三方开发的模块,需要先下载后才能使用。在每个.js自定义模块中都有一个module对象,它存储了和当前模块有关的信息。注意,在同一个模块中不要同时使用exports和module.exports。在Node.js中,加载某个模块实际上是加载该模块的module.exports属性。npm是Node.js中的包管理工具,可以用于下载和管理第三方模块,而第三方模块也被称为包。总之,黑马Node.js学习笔记提供了关于Node.js模块化规范的详细解释和使用方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [黑马程序员node.js学习笔记](https://blog.csdn.net/weixin_50523986/article/details/129937301)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值