NodeJs简明教程将从零开始学习NodeJs相关知识,帮助JS开发者搭建全栈开发技术栈!更多NodeJs精品文章关注本文是NodeJs简明教程的第十篇,将介绍NodeJsdgram模块(UDPserver/client)相关的基本操作。什么是UDP因特网协议集支持一种称为用户数据报协议(UDP,UserDatagramProtocol)的无连接传输协议。UDP为应用程序提供了一种无需建立连接即可发送封装的IP数据报的方式。RFC768描述了UDP。NodeJs使用dgram模块实现UDP服务器/客户端相关功能。dgram.createSocket用于创建一个Socket对象,该对象可以基于socket接收或发送数据。该方法的原型如下:dgram.createSocket(type[,callback])type套接字类型。udp4或udp6,对应ipv4和ipv6callback回调函数echoserverdevelopmentserver.jsconstdgram=require('dgram');constsocket=dgram.createSocket('udp4');socket.on('error',function(err){//监听套接字错误console.log('servererror',err);socket.close();});socket.on('message',function(msg,sender){//监听接收到的数据console.log('%s:%d=>%s',sender.address,sender.port,msg.toString());//打印数据包的详细信息socket.send('socket:'+msg.toString(),sender.port,sender.address,function(err){//发送数据到源地址if(err){console.log('reply%s:%dfailed:%s',sender.address,sender.port,err.message);return;}});});socket.bind(10000,function(){//监听UDP端口console.log('服务器正在监听%s:%d',socket.address().address,socket.address().port);});echo客户端开发由于telnet连接服务器使用的是TCP协议,因此本文对应的客户端需要使用NodeJs进行开发。client.jsconstdgram=require('dgram');constsocket=dgram.createSocket('udp4');//创建套接字实例socket.on('message',function(msg,sender){//监控接收到的数据console.log('Receivedmessagefrom%s:%d:%s',sender.address,sender.port,msg.toString());socket.close();});socket.send('hello',10000,function(err){//向目标端口发送数据if(err){console.log('发送错误',err);return;}console.log('发送成功');});执行terminal执行nodeserver.js,输出serverislistening0.0.0.0:10000terminal执行nodeclient.js,输出成功发送并收到127.0.0.1:10000的消息:server:helloServeroutput:127.0.0.1:50577=>hello结束语NodeJsUDPserver和client的开发到此结束,但是在UDP的情况下,包确认、流量控制等操作需要程序员手动完成。这方面确实比较复杂。如果没有特殊要求就用TCP。