GCDAsyncSocket如何识别传入消息的结束

时间:2014-10-18 22:21:00

标签: ios gcdasyncsocket

很容易理解我们可以使用以下方法来识别传入消息的结束,例如: 1.将消息的长度放在数据本身之前 2.使用分隔符

但是,GCDAsyncSocket提供了更全面/更智能/通用的解决方案。它似乎使用低级别的TCP协议来识别消息的开头和结尾。

它是如何制作的?

1 个答案:

答案 0 :(得分:1)

GCDAsyncSocket只使用TCP流。 TCP流并不固有地定义“消息”,顾名思义,它们只是字节流。

GCDAsyncSocket增加了一些方便的方法,使你的工作更轻松

  • readDataToLength:withTimeout:tag:及相关方法在收到指定的字节数后自动完成读取 - 这可以与您提到的第一个选项一起使用。
  • readDataToData:withTimeout:tag:,允许您指定终结符序列并在收到时自动完成读取 - 这是您提到的第二个选项。

TCP支持这些功能并不固有,GCDAsyncSocket的作者只是在原始流上实现了这些解决方案。