0

我正在使用 UDP 数据包,我想澄清以下几点:
1 - “recvfrom”返回的究竟是什么?我的意思是,如果我发送一个大小为 450 字节 + 20 字节 IP 头 + 8 字节 UDP 头的数据包,recvfrom 会整体返回 478 字节,或者可能是这样的:
它收到了 10 字节、300 字节、100 字节、68字节?
2 - “recvfrom”的返回值是否与数据包碎片有关?

注意:
*我假设“recvfrom”成功
*我选择 450 字节以确保 Im 小于最小 MTU

4

1 回答 1

1
  1. 对于 UDP 套接字,recvfrom() 读取 UDP 数据。所以它返回 450 ,前提是您提供了一个至少 450 字节大的缓冲区。如果您提供的缓冲区小于接收到的数据,则数据将被截断,并且 recvfrom() 将读取您提供的缓冲区中可以容纳的尽可能多的数据。

  2. IP 层将是对 UDP 数据包进行分段的部分,在接收主机上它将重新组装它。这对发送/接收应用程序是透明的。

于 2014-01-01T15:24:56.333 回答