美文网首页
996.ICU后iOS社交IM即时通讯——入门篇CocoAsyn

996.ICU后iOS社交IM即时通讯——入门篇CocoAsyn

作者: _Zeap | 来源:发表于2019-03-28 23:07 被阅读0次

         没有服务器的是需要自己先搭建一个。

         通过nginx搭建一个HTTP服务器:

         https://www.cnblogs.com/knowledgesea/p/5175711.html#!comments

         由于需求都会有所不同,可根据自己业务需求来选择使用TCP或者UDP。在入门篇先介             绍CocoAsyncsocket中TCP的用法。

         导入头文件#import  <CocoaAsyncSocket/GCDAsyncSocket.h>  

         1.创建socket的实例对象(可根据业务创建多个,但建议只做一个即可):

          2.连接服务端:

          connectToHost的参数是传ip,port是传端口。

          withTimeout的参数为什么是-1,因为设置其他为时间会出现超时,必然会断线。

          3.实现delegate的方法:

    sock即返回正在使用的socket,data即接收到返回的二进制数据(由客户端和服务端协商该用什么样的标识作为收发的数据包),tag即所在socket线程收到二进制数据的标签。

    在这个方法里面进行解析数据,根据业务需求对数据进行切包、拼包,需要注意的是在这个方法里面要处理丢包的情况。

    socket断线分3种情况,一种是是否自己主动切断(登出),一种是是否网络状态不好而断线(这种情况应该为用户进行断线重连),一种是服务端拒绝(最大原因是处于服务器负载量过大)。

    4.发送数据到服务端:

    writeData传的数据当然只能是二进制,所以需要进行转换;withTimeout是给传的这个当前数据设置一个超时时间,若并发量大的时候就应该考虑该因素;tag是给当前发送的这个数据上标签。

    由于收发数据包是不会自动释放缓存的二进制数据,这样会造成粘包和接收不到下一个包的问题,所以每次收发完数据包都需要进行一个释放数据包的动作,实现以下方法即可

    withTimeout是随着收发的socket进行对应的超时时间设置,tag即对应数据包的标签。

    实现以上步骤即可完成一个初步的TCP连接并进行数据的收发。

    相关文章

      网友评论

          本文标题:996.ICU后iOS社交IM即时通讯——入门篇CocoAsyn

          本文链接:https://www.haomeiwen.com/subject/kulhbqtx.html