GCDAsyncSocket接受数据丢包的问题
2015-04-28 11:52
2086 查看
最近不知道怎么回事,项目里边使用上传图片,接收回执是会出现丢包的现象,后来发现只要是丢包了,在
- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
方法里边的data总是为1448字节,找了好几天没有找到解决方案,谷歌的一下,发现了两个解决方法,第一个为
点击打开链接 这篇文章有介绍方法
这里我用了其中的
- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port{ //连接成功 [_dataSocket readDataToData:[GCDAsyncSocket LFData] withTimeout:-1 tag:1]; // [_dataSocket readDataWithTimeout:-1 tag:1]; }
下边注释的是原来用的方法,改成上边那个方法解决了问题,点开头文件可以发现这个方法是设置一个分割,也就是读到某个data的时候就会停止,这里用LFData的原因是
/** * A few common line separators, for use with the readDataToData:... methods. **/ + (NSData *)CRLFData; // 0x0D0A + (NSData *)CRData; // 0x0D + (NSData *)LFData; // 0x0A + (NSData *)ZeroData; // 0x00
可以看到这个分隔符即为0a,然后在didReadData方法里边打印正常的data值,发现结尾都是以0a结尾的.
相关文章推荐
- GCDAsyncSocket接收数据连包无法解析的问题
- 即时通讯1- 用GCDAsyncSocket解决读取数据丢失
- 即时通讯1- 用GCDAsyncSocket解决读取数据丢失
- Socket 进行UDP广播数据(GCDAsyncUdpSocket)
- Swift udp实现根据端口号监听广播数据(利用GCDAsyncUdpSocket实现)
- Socket 进行UDP广播数据(GCDAsyncUdpSocket)
- GCDAsyncUdpSocket添加数据发送超时时间
- 用Socket的接受数据线程来捕获所连客户端的掉线问题
- iOS学习笔记4-GCDAsyncUdpSocket的使用(实现异步发送接收数据)
- 局域网内通过UDP协议进行传输接受数据——AsyncUdpSocket
- 使用GCDAsyncSocket从服务器下载文件,怎么拼接NSData数据成为一个文件?
- 用GCDAsyncSocket解决AsyncSocket读取数据时丢失部分消息
- 用Socket的接受数据线程来捕获所连客户端的掉线问题
- GCDAsyncSocket 接收不到数据
- 基于 GCDAsyncSocket,简单实现类似《你猜我画》的 socket 数据传输
- Bug-iOS: 关于GCDAsyncSocket使用问题
- GCDAsyncSocket不能读取数据的原因
- 用GCDAsyncSocket解决AsyncSocket读取数据时丢失部分消息
- GCDAsyncSocket实现TCP连接怎么设置发送数据延时
- GCDAsyncUdpSocket 组播监听端口接收数据