如上所述here,最小以太网数据包大小为64字节:
以太网数据包(标头+用户数据+ FCS)小于最小64字节的以太网数据包填充为64字节
我可以假设recv
将读取小于最小以太网帧大小的一次性数据吗?假设连接的另一端一次发送10个字节的数据,我可以在结束时调用recv
一次并假设所有10个字节都被读取了吗?
答案 0 :(得分:1)
在TCP套接字上使用recv
时,您不能假设任何。它可以将从-1(表示错误)的任何数字返回到0(表示关闭的套接字)到N,其中N等于提供给recv
的缓冲区大小。
关于recv
读取的字节数的假设是持续痛苦和错误的来源。