GCDAsyncSocket使用(ipv6适配)
在此之前发给链接关于socket ipv6的适配问题 https://github.com/robbiehanson/CocoaAsyncSocket/issues/405
之前写的socket不怎么清晰,所以很多人过来咨询,打算重新再整理下。顺便把大家的问题总结下
首先得大概了解TCP原理和UDP的一点区别!当然了我自己也是似懂非懂的状态,这些还是要靠自己慢慢摸索,多看看别人的blog见解,网上一搜一大把。GCDAsyncSocket是IOS中TCP通讯使用的一个第三方库。至于的它的什么三次握手啊这些网上多的很,我也不做过多的重复。下面就从demo开始吧!
开始之前应该都能想到socket是贯穿整个项目使用,所以尽量提取出来,写成单例
至于为何把connet方法提出来,主要是为了断开重连方便
链接是否成功和命令是否发送成功的回调 delegate已经提供 我们只要调用方法就可以
有心的童靴可以看到我在链接是否成功里面的 写了readDataWithTimeout的方法 其实是告诉socket你的超时时间
链接成功后肯定要进行数据传输 这部分的各个项目的情况不一样 ,一般都不是单一的命令 所以我建议把具体的命令函数单独写成类
我这里是提出命令数据单独进行处理,可以给大家看看 当然每个公司的协议不同仅作参考
最后就是接受数据的回调,
在这里跟各位童靴说下 ,很多碰到这种问题 ,开始的时候能够接收到返回的数据 过来一会就不能,经常这种情况,我看了下 大家都是把timeout写成 10啊 30啊固定的时间,这里我和大家解释下,这个函数的意义,readDataWithTimeout 它底层相当于开了线程等待接收数据 过了这个时间 就自动停止,-1表示一直接收 。
最后就是socket关闭的方法 DidClose DidDisconnect.
这次更新就到这吧!谢谢!