Node.js dgram.createSocket() 方法

2025年2月21日 | 阅读 4 分钟

在本文中,我们将讨论 Node.js 中 dgram.createSocket() 方法的语法、参数和示例。

什么是 Node.js dgram.createSocket() 方法?

Node.js dgram 模块提供的最重要功能之一是dgram.createSocket()方法。此方法作为创建 Datagram (UDP) 套接字的基本 API,它促进了用户数据报协议 (UDP) 设备到设备通信。开发人员使用 "dgram.createSocket()" 来实例化 dgram。套接字对象可以更轻松地通过 UDP 进行消息传输和接收。

语法

它具有以下语法:

参数

  • const: 此关键字表示一个常量变量,表示即使套接字创建后,对其的引用也不会改变。
  • dgram: 这是 Datagram (UDP) 套接字处理 Node.js 模块的缩写。
  • createSocket(): createSocket() 函数用于创建 UDP 套接字。返回的 "dgram.Socket" 对象支持 UDP 通信。
  • Options: 以下选项将使用其中一个
    1. type: 它指定要使用的套接字族。在 Node.js 中,可以使用 'udp4' 表示 IPv4 或 'udp6' 表示 IPv6。这决定了套接字的协议和寻址方案。
    2. reuseAddr: 一个布尔值,指示套接字是否可以重用已使用的地址。当此设置为 true 时,多个套接字可以绑定到同一地址。
    3. ipv6Only: 一个布尔值。当设置为 true 时,套接字被强制仅使用 IPv6,双栈功能被禁用。在仅处理 IPv6 地址时很有用。
    4. recvBufferSize: 它确定套接字接收缓冲区 (SO_RCVBUF) 的大小。它计算连接在发生数据丢失之前可以缓冲的最多传入数据。
    5. sendBufferSize: 此参数设置套接字发送缓冲区 (SO_SNDBUF) 的大小。它确立在发生阻塞之前可以从缓冲区发送出的数据的最大数量。
    6. lookup: 它提供了提供唯一查找函数进行主机名解析的选项。它还提供了一个自定义查找函数,允许更改此行为以适应定制的 DNS 解析方案或缓存机制。默认情况下,Node.js 使用操作系统的 DNS 查找机制。
  • callback: 当套接字构建完成并准备好使用时,此可选参数指定的 callback 函数将被执行。callback 函数可以用于处理套接字事件,或者在接收到套接字对象作为参数时进行额外的套接字设置。

示例

让我们通过一个示例来说明 Node.js 中的 dgram.createSocket() 方法。

输出

 
The server sends buffer size: 24690
The Client sent: Hello
The server received: Hello from 127.0.0.1:46352   

说明

提供的 Node.js 程序演示了如何使用 dgram.createSocket() 方法创建和初始化 UDP 客户端和服务器套接字。在此示例中,首先导入 dgram 模块,并使用 createSocket('udp4') 方法为客户端和服务器创建 UDP 套接字。在侦听传入消息后,服务器会记录每条消息,记录发送者的地址和端口,并退出进程。使用 setSendBufferSize() 方法将服务器的发送缓冲区大小设置为 12345 字节。使用 getSendBufferSize() 验证此大小,并将其报告到控制台。服务器绑定到端口 1234。客户端和服务器上都存在错误处理方法,用于记录和处理任何错误。成功发送消息后,客户端会记录发送的消息,并向服务器发送 "Hello"。此程序成功演示了如何使用 Node.js 进行错误管理、消息处理、缓冲区大小设置和 UDP 套接字创建。