当我使用GCDasyncsocket从服务器(Java)获取套接字消息时,它可以在ios模拟器(xcode 6,iphone6+ )中工作;但是当我使用我的iphone6+连接到测试时,当它接收大数据时,它会丢失数据,下面的详细信息我向服务器发送请求,得到3条回答第一个数据--服务器回答长度为9,第二个是149,最后一个数据是:2912,但是代码显示1448,下面的代码是:
-(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {
NSLog(@"receive datas from method 1");
NSLog(@"Data length = %d",[data length]);
...当我深入研究时,gcd异步套接字中的代码将显示相同的代码
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上测试,它在大多数时候工作得很好~~真奇怪!
有人能给我一些建议吗?
发布于 2014-11-27 14:16:27
我有理由,就是协议分割了消息,我用这种方法发送消息的长度,告诉协议如何分割它,还有其他的解决方案。
在此之后,我还发现协议会结合一些消息,所以,当您尝试解决它时,您不能只考虑拆分的情况!
https://stackoverflow.com/questions/26900610
复制相似问题