博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Socket介绍
阅读量:4045 次
发布时间:2019-05-24

本文共 1726 字,大约阅读时间需要 5 分钟。

1)socket 相关概念:网络通信业称为socket 通信,socket 通常称为”套接字”,用于描述 IP 地址和端口,可以实现不同虚拟机和计算机直接的通信.应用程序可以通过 socket 向网络发送请求或者应答请求.

2)而对于网络连接来说, socket 是平等的,不会因为在服务器端或者客户端产生不同级别.
3)socket 实质: 提供了进程通信的端点.进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联并相互通信的.在双方链接成功的时候,应用程序连段都会昌盛一个 socket 实例,操作这个实例,完成所需要的会话.一个完成的 socket 在一个本地唯一的socket 号,由操作系统分配.

4)socket 连接过程: 套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认.

①:服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态.
②:客户端请求:是指由客户端的套接字提出链接请求,要连接的目标是服务器端套接字.为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求.
③:连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了.而服务器端套接字继续处于监听状态,继续接受其他客户端套接字的连接请求.

5)socket 的使用步骤: 创建socket 连接服务器,发送数据,接受数据 ,断开连接

6)应用场景
一般在游戏开发或股票开发这种要求即使性很强,并且保持发送数据量比较大的场合使用.主要使用类是CFSocketRef

7)补充:http/1.0 短连接 当响应结束后连接会立即断开

http/1.1 长连接 当响应结束后,连接会等待非常短的时间,如果这个时间内没有新的请求,就会断开连接

扩展:

应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口,区分不同应用程序进程间的网络通信和连接。

网络化的应用程序在开始任何通讯之前都必需要创建套接字。就像电话的插口一样,没有它就完全没办法通信。

生成套接字,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。

Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。

要通过互联网进行通信,至少需要一对套接字,一个运行于客户机端,称之为ClientSocket,另一个运行于服务器端,称之为serverSocket。

根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。

服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

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

转载地址:http://lfwci.baihongyu.com/

你可能感兴趣的文章
SSH框架总结(框架分析+环境搭建+实例源码下载)
查看>>
js弹窗插件
查看>>
自定义 select 下拉框 多选插件
查看>>
js判断数组内是否有重复值
查看>>
js获取url链接携带的参数值
查看>>
gdb 调试core dump
查看>>
gdb debug tips
查看>>
arm linux 生成火焰图
查看>>
linux和windows内存布局验证
查看>>
linux insmod error -1 required key invalid
查看>>
linux kconfig配置
查看>>
linux不同模块completion通信
查看>>
linux printf获得时间戳
查看>>
C语言位扩展
查看>>
linux irqdebug
查看>>
git 常用命令
查看>>
linux位操作API
查看>>
uboot.lds文件分析
查看>>
uboot start.s文件分析
查看>>
没有路由器的情况下,开发板,虚拟机Ubuntu,win10主机,三者也可以ping通
查看>>