iOS网络编程socket

作者: 测试账号 | 来源:发表于2021-07-13 22:46 被阅读0次

     最近看到很多招聘都需要有这个技能,精通socket网络编程,而我接触的好像都是直接用的第三方,融云IM或者七牛啥的。好奇心让我去大概了解了下,以下为个人了解思路。

    一、基础层

    1.通信离不开协议,即TCP/UDP协议,socket即时通讯也是在此基础上面进行了封装。先来看这俩协议区别:

    TCP协议:传输需要建立安全连接,即三次握手连接,四次挥手断开连接。传输过程安全可靠,确定就是慢,毕竟每次连接都需要建立安全连接。

    UDP协议:无需建立安全连接,可以直接进行数据传输,UDP数据段进行传输,网上写的每段最大不超过64k。传输过程快,但是容易丢包,毕竟没建立安全传输通道,直接传输的。

    2.上层协议封装,供http协议使用。主要用于客户端主动发起通信,收到响应请求结束,在请求结束后,会主动释放连接。一次一连接,也叫短链接,无状态协议。

    3.上层协议封装,作为socket通信基础,服务端和客户端建立长连接。服务端可主动将消息推送给客户端。

    然后再回到iOS的socket网络编程

    二、iOS层

    1.BSDSocket

    iOS基于C语言的开发,最底层作为socket的是BSDSocket,这个库,封装了socket的一些基本操作,包括建立连接,数据的读写。

    服务端:1>.监听连接请求   2>接收连接请求   3>数据传输    4>关闭连接   

    客户端 :2>建立连接       2>数据传输     3>关闭连接

    2.CFSocket

    iOS在BSDSocket基础上,又加入了自己的RunLoop规则,即"接受消息->等待->处理" 的循环中“

    基本功能一致,并且包含了少数开销。

    服务端:1>创建socket  2> 绑定本地IP和端口到Socket   3>获取当前线程的runloop并把服务端Socket加入到RunLoop中,启动RunLoop  4>创建对应客户端socket的输入输出流

    客户端:1>直接创建对应服务端的IP和端口的Socket  2>并创建对应的输入输出流  3>创建对应客户端socket的输入输出流

    ok!👌!戛然而止!

    相关文章

      网友评论

        本文标题:iOS网络编程socket

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