iOS即时通讯(一)- Socket( 插座)
2016-07-26 本文已影响539人
PlusNie
Socket
- Socket又称“套接字”
- 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为socket
- 应用程序通常通过“套接字”向网络发出请求或者应答网络请求
网络通信的要素
- 网络上的请求就是通过Socket来建立连接然后互相通信
- IP地址(网络上主机设备的唯一标识)
- 端口号(定位程序)
- 用于标示进程的逻辑地址,不通进程的标示
- 有效端口:065535,其中01024是由系统使用或者保留端口,开发中建议使用1024以上的端口
- 传输协议(用什么样的方式进行交互)
- 通讯的规则
- 常见协议:TCP、UDP
TCP&UDP
TCP(Transmission Control Protocol,传输控制协议)
- 建立连接,形成传输数据的通道
- 在连接中进行大数据传输(数据大小不做限制)
- 通过三次握手完成连接,是可靠协议,安全送达
- 必须建立连接,效率会稍低
对于TCP三次握手可以理解为打电话,拨电话(第一次握手),对方接电话(挂断导致第二次握手失败),互相问候(如果单方面,认为第三次握手失败)。
UDP (User Data Protocol,用户数据报协议)
- 将数据及源和目的的封装成数据包中,不需要建立连接
- 每个数据报的大小限制在64k之内
- 因为无需连接,因此是不可靠协议
- 不需要建立连接,速度快
对于UDP可以理解为发短信,不需要知道对方开机、还是关机、还是停机;如果短信次数超过70条直接挂机,无法知道短信什么时候到达。
Socket通信流程
Socket通信流程图.png实现Socket服务端接听
实现socket的监听方法
- 使用C语言实现
- 使用CocoaAsyncSocket第三方框架,内部是对C的封装
Telnet命令telnet host port/telnet 192.168.10.10 5288
- telnel命令是监听服务器上否个端口对应的服务有没有开启
Socket 层上的协议
- Socket层上的协议指的数据传输的格式
- HTTP协议(HyperText Transfer Protocol),超文本传输协议)
传输格式,假设:这是建设,实际http的格式不是这样的。http1.1,content-type:multipart/form-data,content-lenth:188,body:username=zhangsan&password=123456 - XMPP协议,是一款即时通讯协议(Extensible Messaging and Presence Protocol,可扩展消息处理现场协议)
是基于XML(Extensible Markup Language,可扩展标示语言)的协议,它用于IM(Instant Messaging,即时通讯)以及在线现场探测。这个洗衣可能最终允许因特网用户向因特网上的其他任何人发送即时消息