当前位置: 技术问答>linux和unix
请教,socket中recv不能一次完全接收send发送的字节数?
来源: 互联网 发布时间:2016-11-27
本文导语: 我有个socket程序,发送端(开发板)send(new_sockfd,buffer,2048,0),接收端(PC)recv(sockfd,buffer,2048,0)),现在的问题是每次send发送2048字节,recv只能接收到1448字节,再次调用recv才能接收到剩下的600字节数据。请问这是什么...
我有个socket程序,发送端(开发板)send(new_sockfd,buffer,2048,0),接收端(PC)recv(sockfd,buffer,2048,0)),现在的问题是每次send发送2048字节,recv只能接收到1448字节,再次调用recv才能接收到剩下的600字节数据。请问这是什么情况呢?是缓冲区设置的问题吗?还是网络的问题呢?
|
一个IP包一次传输的字节数是有限制的,如果超过了将会分包传输。
2048肯定超过了,所以肯定是分包传过去的,接收端分多次接收也就好理解了
2048肯定超过了,所以肯定是分包传过去的,接收端分多次接收也就好理解了
|
协议栈分包了,很正常的
|
网络延迟应该也是一个因素
|
如果网络情况好的话,这2048字节数据可能同时到达接收方的缓冲区
|
对的
|
我也正在研究,楼上说得在理、