求大侠 AsyncSocket 类数据接收问题

xuwmzi 2012-07-28 11:33:47
服务器给我发送返回数据,大小大概在20kb(小b,位),我接收的长度却只有2872b,多的时候可以达到7180了,最少的时候是1436,(这些数字都是1436的倍数). 读取时间,我都设置为-1,也就是最大值... 返回的长度最常见就是2872了...
请问各路大侠,有没有遇到此种情况,或者您觉得可能的原因在哪?
...全文
249 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ixfly 2012-08-02
  • 打赏
  • 举报
回复
比如原来的数据是AAAAAA,现在分成两个包了,两个包里面的数据加一起,长度超过了原包的长度。

胡说八道。如果服务器发了AAAAAA,接着发BBBBBB,你收到的可能是AAAAAA,再收到BBBBBB,或者一次性收到AAAAAABBBBBBB。没有其他情况。别什么抓包分析什么XX。学点基础比较好
xuwmzi 2012-08-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

如用载包工具看到的数据多是因为那是一部分tcp封包的协议头tcp自动加的包头!
[/Quote]

请问,这部分包头,我应该如何解析?
xuwmzi 2012-08-02
  • 打赏
  • 举报
回复
嗯,问题已经解决了一大半,楼上说的对,不会有多余的数据,组装起来就好了,只是粘包现象很恐怖...这个需要好好处理....
xuwmzi 2012-08-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

比如原来的数据是AAAAAA,现在分成两个包了,两个包里面的数据加一起,长度超过了原包的长度。

胡说八道。如果服务器发了AAAAAA,接着发BBBBBB,你收到的可能是AAAAAA,再收到BBBBBB,或者一次性收到AAAAAABBBBBBB。没有其他情况。别什么抓包分析什么XX。学点基础比较好
[/Quote]
服务器只发送了一次AAAAAABBBBBBB,而我这边是多次接收,而且总长度比服务器发送的长度还多出几个字节,我不知道多出的这几个字节是怎么回事.....
liuh6 2012-07-31
  • 打赏
  • 举报
回复
如用载包工具看到的数据多是因为那是一部分tcp封包的协议头tcp自动加的包头!
xuwmzi 2012-07-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

发的包的长度可能固定,但收到的包长度会时大时小。
这个长度不是自已控制的,这是tcp传输时底层做的工作。发送的数据存到缓冲中,当网络整度慢的时候,两个包会粘接在一起一起发送。这在tcp传输数据时常见到的现像。。
[/Quote]
嗯,我找了很久,才发现,真的是这样的。比如原来的数据是AAAAAA,现在分成两个包了,两个包里面的数据加一起,长度超过了原包的长度,多出来的长度是什么?不会是相应的格式吧,比如目标IP,端口之类的吧? 还是包序列?
xuwmzi 2012-07-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

我估计你的服务器按1436大小分包了的。
[/Quote]

也不是,服务器是一次性把数据全部返回的..
ixfly 2012-07-28
  • 打赏
  • 举报
回复
我估计你的服务器按1436大小分包了的。
liuh6 2012-07-28
  • 打赏
  • 举报
回复
发的包的长度可能固定,但收到的包长度会时大时小。
这个长度不是自已控制的,这是tcp传输时底层做的工作。发送的数据存到缓冲中,当网络整度慢的时候,两个包会粘接在一起一起发送。这在tcp传输数据时常见到的现像。。
xuwmzi 2012-07-28
  • 打赏
  • 举报
回复
服务器是一次性发送数据的,但是客户端却分批接收...而且每次接收的长度并不一致...这个..

29,028

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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