美文网首页
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