IOS中使用 CocoaAsyncSocket

2020-01-14 20:25:36丽君

GCD & Run-loop

仔细观察 CocoaAsyncSocket 对其类的命名可以发现除了 TCP 和 UDP 分拆成了两套 API,一套时基于 GCD 程安全的 GCDAsyncSocket/GCDAsyncUdpSocket,一套是基于 Run-loop 的 AsyncSocket/AsyncUdpSocket,一般来说我们用基于 GCD 的封装就好了。

在实际应用中我想大多数需求都是基于 TCP 的,所以我们主要看看 GCDAsyncSocket,看到 GCD 不要以为其所有回调都是 GCD 的,看了源码你就知道所有回调全是 Delegate。

GCDAsyncSocket

一般 iOS 上 socket 做 client 端居多,所以用到的一些基本操作就是 connect、read、write、disconnect,GCDAsyncSocket 的封装非常简单,初上手可能遇到的问题就在于一个完整的 socket 操作流程的不清楚,只要摸清楚服务端的逻辑流程就很轻松了,比如需要先读多少字节,然后从结果中解析出某部分数据,然后再读多少字节,再分析数据,再读再写...

总结

其实 Socket 并没有想象中的那么复杂,很多底层的工作框架都替我们做了,可以更集中精力在业务逻辑上。



注:相关教程知识阅读请移步到IOS开发频道。