Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用 UDP 数据包,我想澄清以下几点: 1 - “recvfrom”返回的究竟是什么?我的意思是,如果我发送一个大小为 450 字节 + 20 字节 IP 头 + 8 字节 UDP 头的数据包,recvfrom 会整体返回 478 字节,或者可能是这样的: 它收到了 10 字节、300 字节、100 字节、68字节? 2 - “recvfrom”的返回值是否与数据包碎片有关?
注意: *我假设“recvfrom”成功 *我选择 450 字节以确保 Im 小于最小 MTU
对于 UDP 套接字,recvfrom() 读取 UDP 数据。所以它返回 450 ,前提是您提供了一个至少 450 字节大的缓冲区。如果您提供的缓冲区小于接收到的数据,则数据将被截断,并且 recvfrom() 将读取您提供的缓冲区中可以容纳的尽可能多的数据。
IP 层将是对 UDP 数据包进行分段的部分,在接收主机上它将重新组装它。这对发送/接收应用程序是透明的。