绑定 UDP 套接字 (Bun.udpSocket())
要创建一个新的(已绑定的)UDP 套接字:
发送数据报
指定要发送的数据以及目标端口和地址。send 不执行
DNS 解析,因为它旨在用于低延迟操作。
接收数据报
创建套接字时,添加一个回调函数以指定接收到数据包时应执行的操作:连接
虽然 UDP 没有连接的概念,但许多 UDP 通信(尤其是作为客户端)仅涉及一个对等方。 在这种情况下,将套接字连接到该对等方可能是有益的,这指定了所有数据包发送到的地址 并将传入数据包限制为仅来自该对等方。使用 sendMany() 一次发送多个数据包
如果您想一次发送大量数据包,将它们全部批处理在一起是有意义的,以避免
每次进行系统调用的开销。这可以通过 sendMany() API 实现:
对于未连接的套接字,sendMany 以一个数组作为其唯一参数。每三个数组元素描述一个数据包:
第一项是要发送的数据,第二项是目标端口,最后一项是目标地址。
sendMany 只需一个数组,其中每个元素代表要发送到对等方的数据。
sendMany 返回成功发送的数据包数量。与 send 一样,sendMany 仅接受有效的 IP 地址
作为目标,因为它不执行 DNS 解析。
处理背压
您发送的数据包可能不适合操作系统的数据包缓冲区。您可以通过以下方式检测到这种情况:send返回falsesendMany返回一个小于您指定的数据包数量的数字。在这种情况下,一旦套接字再次变为可写,将调用drain套接字处理程序:
套接字选项
UDP 套接字支持设置各种套接字选项:多播
Bun 支持 UDP 套接字的多播操作。使用addMembership 和 dropMembership 加入和离开多播组:
addSourceSpecificMembership 和 dropSourceSpecificMembership: