美文网首页即时通讯
Socket套接字(二)

Socket套接字(二)

作者: 春风依旧 | 来源:发表于2018-12-29 23:55 被阅读7次

一、Scoket简介

  • Socket又称"套接字"
  • 网络上两个程序通过一个"双向的通信连接实现数据交换"连接的一端称为socket
  • 应用程序通常通过"套接字"向网络发出请求或者应答网络请求
  • Socket层上的协议是指数据传输的格式


    Scoket.gif

二、网络通讯的要素

网络上的请求就是通过Socket来建立连接后互相通信

  • IP地址 (网络上主机设备的唯一标识)
  • 端口号(定位程序)
  • 传输协议
    • 通讯的规则
    • TCP,UDP

三、Socket通信流程

Scoket流程.jpg

1、服务器监听:

服务器端套接字并不定位具体的客户端套接字,
而是处于等待连接的状态(也就是上面的阻塞直到客户端连接),
实时监控网络状态,等待客户端的连接请求

2、客户端请求:

客户端初始化Socket提出连接请求,要连接的目标是服务器端的Socket。

3、连接确认:

当服务器端Socket监听到或者说接收到客户端Socket的连接请求时,就响应客户端Socket的请求,
建立一个新的线程,把服务器端Socket的描述发给客户端,一旦客户端确认了此描述,
双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

四、Socket连接后的几个机制:

1、心跳机制:

心跳一般是客户端每隔一定时间向服务端发送自定义指令,以判断双方是否存活,
因其按照一定间隔发送,类似于心跳一样,所以大家也就都叫它心跳机制

Socket选择TCP传输协议建立了连接,这个TCP协议有一个KeepAlive机制,下面文章也是很明确的指出了为什么不能用TCP协议的KeepAlive机制来做心跳的原因, 总结的观点是: TCP KeepAlive 是用于检测连接的死活,而不是用来检测连接是否可用!而我们的心跳就是为了检测连接死活的同时还要检测连接是否可用!最简单是定时心跳。

2、 PingPong机制:

这个的出现是为了在我们设置的这个心跳间隔之内出现了连接问题

①、当服务端发出一个Ping,客户端没有在约定的时间内返回响应的ack,则认为客户端已经不在线,这时我们Server端会主动断开Scoket连接,并且改由APNS推送的方式发送消息

②、同样当客户端去发送一个消息,因为我们迟迟无法收到服务端的响应ack包,则表明客户端或者服务端已不在线,我们也会显示消息发送失败,并且断开Scoket连接。

PingPong机制.png

3、 断开重连

我们自己主动去断开的Scoket连接(退出登录,App退出到后台等等)是不需要重连。其他的连接断开,我们都需要进行断线重连,一般解决方案是尝试重连几次,如果仍旧无法重连成功,那么不再进行重连。

相关文章

  • iOS 原生Socket和CocoaAsyncSocket框架的

    一、Socket到底是什么? 1、Socket原理 1.1、套接字(Socket)概念 套接字(Socket)是通...

  • Android网络框架学习——DNS解析与Socket通信原则

    一、什么是DNS? 二、DNS查询过程 三、Socket介绍 Socket 的中文翻译过来就是“套接字”。套接字是...

  • 2018-11-28 Day18

    一.socket 1.socket套接字socket又叫套接字,指的是实现通信过程的两个端,等待请求的一端 二.U...

  • python核心编程第三版

    第二章-网络编程 socket() 嵌套字创建tcp/ip套接字tcpsock - socket.socket(s...

  • day19

    socket套接字 socket又叫套接字,实现网络通信的python通过提供socket标准库来支持socket...

  • 2018-09-12 day18网络编程

    1.socket套接字 socket又叫套接字,就是进行数据通信两端。分为服务端套接字和客户端套接字 套接字编程:...

  • Socket

    Socket socket是套接字,多指传输层网络接口。 Socket和SocketServer是基于套接字的服务...

  • Python基础语法-3

    socket套接字使用流程:1.创建套接字2.使用套接字收/发数据3.关闭套接字 创建一个TCP socket 创...

  • Socket 网络编程(一)

    Socket Socket,又称“套接字”,应用程序通常通过“套接字”向网络发出请求或应答网络请求。 Socket...

  • CocoaAsyncSocket --Socket学习

    Socket理论 套接字(Socket)概念 套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信...

网友评论

    本文标题:Socket套接字(二)

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