开发手册 欢迎您!
软件开发者资料库

UDP / 数据报 | Node.js

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。

Node.js v8.x 中文文档


dgram (数据报)#

稳定性: 2 - 稳定的

dgram模块提供了 UDP 数据包 socket 的实现。

const dgram = require('dgram');const server = dgram.createSocket('udp4');server.on('error', (err) => {  console.log(`服务器异常:\n${err.stack}`);  server.close();});server.on('message', (msg, rinfo) => {  console.log(`服务器收到:${msg} 来自 ${rinfo.address}:${rinfo.port}`);});server.on('listening', () => {  const address = server.address();  console.log(`服务器监听 ${address.address}:${address.port}`);});server.bind(41234);// 服务器监听 0.0.0.0:41234

dgram.Socket 类#

dgram.Socket对象是一个封装了数据包函数功能的[EventEmitter][]。

dgram.Socket实例是由[dgram.createSocket()][]创建的。创建dgram.Socket实例不需要使用new关键字。

'close' 事件#

'close'事件将在使用[close()][]关闭一个 socket 之后触发。该事件一旦触发,这个 socket 上将不会触发新的'message'事件。

'error' 事件#

  • exception

当有任何错误发生时,'error'事件将被触发。事件发生时,事件处理函数仅会接收到一个 Error 参数。

'listening' 事件#

当一个 socket 开始监听数据包信息时,'listening'事件将被触发。该事件会在创建 UDP socket 之后被立即触发。

'message' 事件#

当有新的数据包被 socket 接收时,'message'事件会被触发。msgrinfo会作为参数传递到该事件的处理函数中。