recv读取数据的小问题?

caoshuh4086 2006-03-26 04:51:33
如果客户端发了10个字节,服务器先读取5个字节,然后再读取五个字节.
问题是为什么读取了5个字节后再去读,发现剩下的5个字节没有了?
这是什么原因呢?难道一次只能读完,读不完就丢失了?还是有个时间限制,多长时间后就消息了
谢谢
...全文
154 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2006-03-31
  • 打赏
  • 举报
回复
TCP是流,UDP是数据报,后者发过去不管你怎么处理,也不管是否发送到达
bluebroad 2006-03-28
  • 打赏
  • 举报
回复
If the datagram or message is larger than the buffer supplied, the buffer is filled with the first part of the datagram and recv generates the error WSAEMSGSIZE.
For unreliable protocols (for example, UDP), the excess data is lost;
for reliable protocols, the data is retained by the service provider until it is successfully read by calling recv with a large enough buffer.

以上是MSDN对recv函数的解释,大体意思是:对于不可靠协议(如UDP),超出的部分将会被丢掉;而对于TCP则不会,数据会一直保存到被用户读完为止。所以你的程序是不是使用UDP协议啊?
PiggyXP 2006-03-27
  • 打赏
  • 举报
回复
你设置的接收缓冲区是多大呢?

为什么不一次都读完,然后5个5个的处理呢?一次接收5字节效率太低了吧呵呵

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧