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通讯很容易入门,但是需要注意的细节还是很多。

你可能感兴趣的:(ios开发socket通讯数据包、读取数据、心跳包)