很容易理解我们可以使用以下方法来识别传入消息的结束,例如: 1.将消息的长度放在数据本身之前 2.使用分隔符
但是,GCDAsyncSocket提供了更全面/更智能/通用的解决方案。它似乎使用低级别的TCP协议来识别消息的开头和结尾。
它是如何制作的?
答案 0 :(得分:1)
GCDAsyncSocket只使用TCP流。 TCP流并不固有地定义“消息”,顾名思义,它们只是字节流。
GCDAsyncSocket增加了一些方便的方法,使你的工作更轻松
readDataToLength:withTimeout:tag:
及相关方法在收到指定的字节数后自动完成读取 - 这可以与您提到的第一个选项一起使用。readDataToData:withTimeout:tag:
,允许您指定终结符序列并在收到时自动完成读取 - 这是您提到的第二个选项。TCP支持这些功能并不固有,GCDAsyncSocket的作者只是在原始流上实现了这些解决方案。