查看: 2221|回复: 0

SAMIM iOS端 主体业务之- socket

[复制链接]

4

主题

4

帖子

30

积分

积分
30
发表于 2018-11-9 22:09:08 | 显示全部楼层 |阅读模式
本帖最后由 kongdezhi 于 2018-11-9 22:09 编辑

Socket的基本概念
1.定义
网络上两个程序通过一个双向通信连接实现数据交互,这种双向通信的连接叫做Socket(套接字)。
2.本质
网络模型中应用层与TCP/IP协议族通信的中间软件抽象层,是它的一组编程接口(API),也即对TCP/IP的封装。TCP/IP也要提供可供程序员做网络开发所用的接口,即Socket编程接口。
3.要素
Socket是网络通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含进行网络通信的必须的五种信息:
  • 连接使用的协议
  • 本地主机的IP地址
  • 本地进程的协议端口
  • 远程主机的IP地址
  • 远程进程的协议端口

4.特性
Socket可以支持不同的传输协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接;同理,当使用UDP协议进行连接时,该Socket连接就是一个UDP连接。
多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
5.连接
建立Socket连接至少需要一对套接字,分别运行于服务端(ServerSocket)和客户端(ClientSocket)。套接字直接的连接过程氛围三个步骤:
Step 1 服务器监听
服务端Socket始终处于等待连接状态,实时监听是否有客户端请求连接。
Step 2 客户端请求
客户端Socket提出连接请求,指定服务端Socket的地址和端口号,这时就可以向对应的服务端提出Socket连接请求。
Step 3 连接确认
当服务端Socket监听到客户端Socket提出的连接请求时作出响应,建立一个新的进程,把服务端Socket的描述发送给客户端,该描述得到客户端确认后就可建立起Socket连接。而服务端Socket则继续处于监听状态,继续接收其他客户端Socket的请求。
iOS客户端Socket的实现
1.iOS端socket协议如下(协议相当于Java中的接口)
00屏幕快照 2018-11-05 下午5.11.11.png
2.iOS端socket协议的具体实现 交由SIMSocketManager类实现(SIMSocketManager类遵循SIMSocketProtocol协议)
11屏幕快照 2018-11-05 下午5.15.07.png
链接和断开链接无非就是发送链接和断开链接的消息,主要的逻辑在于心跳包机制,和聊天消息发送和接受处理
3.心跳包机制
心跳检测步骤:
1客户端每隔一个时间间隔发生一个探测包给服务器
2客户端发包时启动一个超时定时器
3服务器端接收到检测包,应该回应一个包
4如果客户机收到服务器的应答包,则说明服务器正常,删除超时定时器
5如果客户端的超时定时器超时,依然没有收到应答包,则说明服务器挂了
iOS 端,在登录成功后,会启动定时器,发送心跳致电。如下图
22屏幕快照 2018-11-05 下午5.21.04.png


4.聊天消息发送
33屏幕快照 2018-11-05 下午5.22.13.png

5.接受消息
44屏幕快照 2018-11-05 下午5.24.35.png

iOS消息的详细处理方式,消息类型多,处理方式也不一样,以后再分次介绍。


回复

使用道具 举报

友情链接

热点

返回列表 发新帖
您需要登录后才可以回帖 登录

本版积分规则

Copyright © 2018 SAMIM.All Rights Reserved

快速回复 返回顶部 返回列表