send 抽象方法

int send(
  1. List<int> buffer,
  2. InternetAddress address,
  3. int port
)

异步发送一个数据报。

返回写入的字节数。这始终是 buffer 的大小或 0

0 返回值表示发送数据报将会阻塞,而且 send 调用可以再次尝试。

buffer 大小返回值表示已经向操作系统提出了发送数据报的请求。但这并不表示操作系统成功发送了数据报。如果在尝试发送数据报时发生本地失败,则会将一个错误事件添加到 Stream。如果在网络或远程失败的情况下则不会报告。

IPv4 UDP 数据报的最大大小为 65535 字节(包括数据和头部),但由于操作系统限制和网络的最大传输单元(MTU),实用的最大大小可能要低得多。

某些 IPv6 实现可能支持高达 4GB 的有效负载(请参阅 RFC-2675),但这种支持是有限的(请参阅 RFC-6434),并在后来的标准中被删除(请参阅 RFC-8504)。

Chromium 团队的实证测试表明,大于 1350 的有效负载无法可靠接收。

实现方式

int send(List<int> buffer, InternetAddress address, int port);