LLR104 2015-04-26 07:57 采纳率: 28.6%
浏览 6346
已采纳

往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条)

报告相同问题?

悬赏问题

  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接