很容易理解,我们可以使用以下方法来识别传入消息的结束,例如: 1.将消息的长度放在数据本身之前2.使用分隔符。
然而,GCDAsyncSocket提供了一个更全面、更智能/更通用的解决方案。它似乎使用低级的TCP协议来识别消息的开始和结束。
它是怎么制造的?
发布于 2014-10-19 03:03:56
GCDAsyncSocket只使用TCP流。TCP流本身并不定义“消息”,顾名思义,它们只是字节流。
GCDAsyncSocket添加了一些方便的方法,使事情变得更容易一些。
readDataToLength:withTimeout:tag:
和相关方法会自动完成读取--这可以与您提到的第一个选项一起使用。readDataToData:withTimeout:tag:
允许您指定终止符序列,并在接收到它时自动完成读取--这是您提到的第二个选项。TCP本身并不支持这些功能,GCDAsyncSocket的作者只是在原始流的基础上实现了这些解决方案。
https://stackoverflow.com/questions/26445135
复制相似问题