首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCDAsyncSocket丢失数据

GCDAsyncSocket丢失数据
EN

Stack Overflow用户
提问于 2014-11-13 02:58:34
回答 1查看 523关注 0票数 3

当我使用GCDasyncsocket从服务器(Java)获取套接字消息时,它可以在ios模拟器(xcode 6,iphone6+ )中工作;但是当我使用我的iphone6+连接到测试时,当它接收大数据时,它会丢失数据,下面的详细信息我向服务器发送请求,得到3条回答第一个数据--服务器回答长度为9,第二个是149,最后一个数据是:2912,但是代码显示1448,下面的代码是:

代码语言:javascript
复制
-(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {
    NSLog(@"receive datas from method 1");
    NSLog(@"Data length = %d",[data length]);
...

当我深入研究时,gcd异步套接字中的代码将显示相同的代码

代码语言:javascript
复制
if (currentRead->bufferOwner)
{
    // We created the buffer on behalf of the user.
    // Trim our buffer to be the proper size.
    [currentRead->buffer setLength:currentRead->bytesDone];

    result = currentRead->buffer;
    NSLog(@"if %lu %lu",(unsigned long)currentRead->bytesDone,(unsigned long)result.length);
}

它在模拟器中工作得很好,但在真实的手机上却出了问题;我也在iphone4s上测试,它在大多数时候工作得很好~~真奇怪!

有人能给我一些建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-27 14:16:27

我有理由,就是协议分割了消息,我用这种方法发送消息的长度,告诉协议如何分割它,还有其他的解决方案。

在此之后,我还发现协议会结合一些消息,所以,当您尝试解决它时,您不能只考虑拆分的情况!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26900610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档