模块概述dgram模块是对UDPsockets的一层封装,比net模块要简单的多。让我们看下面的例子。文本同步在GitHub主题系列《Nodejs学习笔记》UPDclientvsUDPserver首先启动UDPserver,监听来自33333端口的请求server.js//例子:UDPservervarPORT=33333;varHOST='127.0.0.1';vardgram=require('dgram');varserver=dgram.createSocket('udp4');server.on('listening',function(){varaddress=server.address();console.log('UDPServerlisteningon'+address.address+":"+address.port);});server.on('message',function(message,remote){console.log(remote.address+':'+remote.port+'-'+message);});server.bind(PORT,HOST);然后,创建一个UDP套接字,向33333端口发送请求。client.js//示例:UDPclientvarPORT=33333;变种主机='127.0.0.1';vardgram=require('dgram');varmessage=Buffer.from('我功夫好!');varclient=dgram.createSocket('udp4');client.send(message,PORT,HOST,function(err,bytes){if(err)throwerr;console.log('UDPmessagesentto'+HOST+':'+PORT);client.close();});运行server.js。nodeserver.js运行client.js。?2016.12.22-dgramgit:(master)?nodeclient.jsUDPmessagesentto127.0.0.1:33333服务器打印如下日志:UDPServerlisteningon127.0.0.1:33333127.0.0.1:58940-MyKungFuisGood!Broadcast通过dgram实现广播功能非常简单,服务端代码如下。vardgram=require('dgram');varserver=dgram.createSocket('udp4');varport=33333;server.on('message',function(message,rinfo){console.log('servergotmessage来自:'+rinfo.address+':'+rinfo.port);});server.bind(port);然后创建一个客户端并广播到地址'255.255.255.255:33333'。vardgram=require('dgram');varclient=dgram.createSocket('udp4');varmsg=Buffer.from('helloworld');varport=33333;varhost='255.255.255.255';客户端.bind(function(){client.setBroadcast(true);client.send(msg,port,host,function(err){if(err)throwerr;console.log('msghasbeensent');client.关闭();});});运行程序,最终服务器端打印日志如下?2016.12.22-dgramgit:(master)?nodebroadcast-server.jsservergotmessagefrom:192.168.0.102:61010相关链接https://nodejs.组织/api/dgram....
