Node.js也提供了UDP编程的能力,相关类库在“dgram”模块里。
与TCP不同,UDP是无连接的,不保障数据的可靠性,不过它的编程更为简单,有时候我们也需要它。比如做APP的统计或者日志或者流媒体,很多流媒体协议都会用到UDP,网上一搜一大堆。
使用UDP,如果你要发送数据,只需要知道对方的主机名(地址)和端口号,扔一消息过去即可。至于对方收不收得到,听天由命了。这就是数据报服务,类似快递或邮件。
我们这次来介绍一下Node.js里的UDP编程,我会提供一个UDP版本的echoServer和echoClient。
UDP编程的一般模型
客户端和服务端分开来说。
先说服务端吧。
服务端
作为UDP服务器,要想接收来自客户端的消息,在Node.js里,大体有这么几步:
- 导入dgram模块
- 创建socket(套接字)
- 处理message事件
- 绑定端口
后面我们的echoServer示例可以看到具体的代码。
客户端
客户端UDP编程就更简单了,一下几步,就可以了:
- 导入dgram模块
- 创建socket(套接字)
- 发送消息
当然有时你也可能希望客户端也能收到服务消息,比如你发一个消息给服务端,希望服务端反馈,那此时就也需要处理message事件和绑定端口。具体就看我们的echoClient示例了。
API介绍
要使用dgram模块,只需这样:
var dgram = require('dgram');
引入了dgram后,就可以使用它提供的方法createSocket来创建套接字了。createSocket方法返回一个dgram.Socket对象,这个对象提供了一系列的方法和事件。
dgram.Socket的bind方法把socket和一个端口绑定到一起&#x