LLR104
2015-04-26 07:57
采纳率: 28.6%
浏览 6.2k

往socket发送大量数据,接收方无法读取到完整数据

大家有没有遇到一种情况,客户端往服务器的socket发送了一个很大的数据(3万+byte),在服务器那边read socket的时候没有读到所有的数据,服务器用while去读但是都无法读到客户端发过来的所有数据,读取socket fd的代码如图
图片说明

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

3条回答 默认 最新

  • 开水 2015-04-26 09:28
    最佳回答

    建议你从如下角度检查或修改代码:

    1. 你是否使用循环send,并确定3W+字节都已经发送?
    2. TCP传输数据会受网络影响,如果网络发生拥塞,3W+字节可能不会一次性全部到达,这样仍然可能在收完3W+字节数据前read返回EAGAIN,这种情况下,建议你在包头加4个字节的int值来标识整个数据包的长度,然后你的收包端代码先读取这个长度,然后再在多次循环中将数据收齐(如返回EAGAIN,那就等待下次再接收后续数据)
    评论
    解决 无用
    打赏 举报
查看更多回答(2条)

相关推荐 更多相似问题