ios开发socket通讯数据包、读取数据、心跳包

socket通讯目前用得比较多的有AsyncSocket与GCDAsyncSocket两个类包。gcd可以将socket与队列绑定,很多方法都已经被作者封装到协议里面了。

1、关于socket对象建议做成全局的对象,因为每个进程都是连接一个socket,所以至于是单例还是全局变量看自己定义。

2、对于经常说的心跳连接:如果不发数据的话,你不知道另一头是不是断了,这样就可能会出现占用好多资源的情况,所以实践里对keepalive的连接,是要隔一段时间就发一下数据看看另一头有没有反应的,所以使用心跳包来判断服务端是否还与自己保持连接。所以在做一些需要长时间连接的操作的时候最好定时给服务端发送一些数据,这样能准确的判断是否断线

3、[self.socket readDataWithTimeout:30 tag:0];每次收到数据之后都要循环读取数据,防止数据丢失。关于tag还有一个好处就是可以根据业务逻辑进行定义比如:tag:0=心跳包,tag:1=控制命令,tag:2=图片,tag:3=视频。。。

代码就不贴了,有不懂的可以给我留言,其实资料很多,仔细看就能发现。socket通讯很容易入门,但是需要注意的细节还是很多。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载:http://www.cocoachina.com/ios/20170615/19529.html 参考:h...
    F麦子阅读 4,145评论 3 2
  • http://my.oschina.net/u/2448717/blog/499784 1、AsyncSocket...
    恋熙阅读 1,230评论 0 7
  • 前言 本文会用实例的方式,将iOS各种IM的方案都简单的实现一遍。并且提供一些选型、实现细节以及优化的建议。 注:...
    maTianHong阅读 2,509评论 4 12
  • iPhone的标准推荐是CFNetwork 库编程,其封装好的开源库是 cocoa AsyncSocket库,用它...
    Ethan_Struggle阅读 2,367评论 2 12
  • 傻笑练习1 幸福的人生 仰望天空45度角,流着口水,傻笑……哈哈! 我现在是最苗条的,瘦身成功,身材紧致,小蛮腰,...
    四王点菜阅读 125评论 0 0

友情链接更多精彩内容