JSON

在Node.JS中UDP服务器和客户端通信示例及TCP/UDP协议比较

字号+ 作者:H5之家 来源:H5之家 2017-04-02 17:06 我要评论( )

UDP/TCP比较 用户数据报协议(User Datagram Protocol,UDP)和TCP协议一样,都在传输层,位于IP协议之上。TCP是一个面向连接的协议,它在网络节点之间提供可靠

> 脚本语言 > >

在Node.JS中UDP服务器和客户端通信示例及TCP/UDP协议比较 2017-03-31 09:55 出处:清屏网 人气: 

UDP/TCP比较

用户数据报协议(User Datagram Protocol,UDP)和TCP协议一样,都在传输层,位于IP协议之上。TCP是一个面向连接的协议,它在网络节点之间提供可靠有序的数据流。与TCP不同,UDP允许你向其它主机发送消息(数据报),而不需要提前建立连接。由于UDP的无状态性,不用像TCP那样面向连接,所以UDP相对轻量,这对于服务器响应来向大量客户端的查询非常有用。与TCP相比,UDP的另一个优势是支持消息的广播和多多播。在Node.js中,dgram模块用来支持和实现UDP用户数据报协议。 

 

TCP

UDP

是否连接

面向连接

面向非连接

传输可靠性

可靠的

不可靠的

应用场合

传输大量的数据

少量数据

速度

当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择,如:DNS交换。把SNMP建立在UDP上的部分原因是设计者认为当发生网络阻塞时,UDP较低的开销使其有更好的机会去传送管理数据。TCP丰富的功能有时会导致不可预料的性能低下。

构建UDP服务器

构建一个UDP Socket套接字对象使用dgram.createSocket()方法,这个方法返回的Socket套接字对象,可以监听一个网络端口,从而启动一个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.send('received: ' + msg.toString(), rinfo.port, rinfo.address) }); server.on('listening', function () { var address = server.address(); console.log(`server listening ${address.address}:${address.port}`); }); server.bind(4064);

在上面的示例代码中,创建一个UDP的服务端,这个服务端会监听 4064 端口。 当接到到消息时发送成功给客户端。

构建UDP客户端 var dgram = require('dgram') var server = dgram.createSocket('udp4') var client = dgram.createSocket('udp4') client.send(Buffer.from(JSON.stringify(model)), 4064, 'localhost', function (err) { console.log(err) }) client.on('message', function(msg) { console.log('message:', msg.toString()) })

上面的客户端代码会将数据发送到UDP服务器,收到服务器的回复后会在控制台打印收到的数据。 


分享给小伙伴们:

本文标签: Node.JS,UDP/">Node.JS,UDP

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Node.js学习之模块化机制原理详解

    Node.js学习之模块化机制原理详解

    2017-02-18 16:03

  • Meteor node.js 复制(copy)文件的方法

    Meteor node.js 复制(copy)文件的方法

    2016-01-25 19:50

  • Shunter - a Node.js application built to read JSON and trans

    Shunter - a Node.js application built to read JSON and trans

    2015-11-17 11:39

  • Node.js + Express + MongoDB教程

    Node.js + Express + MongoDB教程

    2015-11-11 10:30

网友点评
>