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

来源:互联网 发布:秦素妍捏脸数据 编辑:程序博客网 时间:2024/06/06 14:14

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端口被关闭');});


原创粉丝点击