我正在使用UDP数据包,我希望被清除一些点:
1 - 究竟是什么" recvfrom"退货?我的意思是,如果我发送一个大小为450字节的数据包+ 20字节的IP标头+ 8字节的UDP标头,recvfrom整体返回478字节或者可能有类似的东西:
它收到10个字节,300个字节,100个字节,68个字节?
2 - " recvfrom"的返回值与数据包碎片有关?
注意:
*我正在谈论" recvfrom"成功了
*我选择450字节以确保Im小于最小MTU
答案 0 :(得分:1)
对于UDP套接字,recvfrom()读取UDP数据。所以它返回450,前提是你提供一个至少450字节大的缓冲区。 如果您提供的缓冲区小于接收的数据,则数据将被截断,并且recvfrom()将读取与您提供的缓冲区相同的数据。
IP层将是分割UDP数据包的部分,在接收主机上它将重组它。这对发送/接收应用程序是透明的。