Skip to content

dgram (数据报)

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

js
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 使用 创建的新实例 dgram.createSocket()new 关键字 不可用于创建 dgram.Socket 实例。

事件:'close'

'close' 使用 关闭套接字后,将发出此事件 close()。一旦触发,'message' 此套接字上将不再发出任何新事件。

事件:'connect'

'connect' 当套接字由于调用成功而与远程地址关联时,会发出该事件 connect()

事件:'error'

每当发生任何错误时,都会发出该 'error' 事件。事件处理函数会传递一个 Error 对象。

事件:'listening'

一旦可寻址并可接收数据,就会 'listening' 发出该事件。这种情况会显式地发生,或者在第一次使用 发送数据时隐式发生。在监听之前,底层系统资源不存在,并且诸如和 之类的调用将失败。dgram.Socketsocket.bind()socket.send()dgram.Socketsocket.address()socket.setTTL()

事件:'message'

'message' 当套接字上有新的数据报可用时,会发出此事件。事件处理函数传递两个参数:msgrinfo

  • msg | 消息。
  • rinfo | 远程地址信息。
    • address | 发件人地址。
    • family | 地址系列('IPv4''IPv6')。
    • port | 发送方端口。
    • size | 消息大小。

Released under the MIT License.