首页 / 行业
浅析C++基础语法梳理之网络编程中Socket
2021-10-26 10:10:00
Socket
Linux Socket 编程(不限 Linux)
Socket 中的 read()、write() 函数
ssize_tread(intfd,void*buf,size_tcount);ssize_twrite(intfd,constvoid*buf,size_tcount);
read()
read 函数是负责从 fd 中读取内容。
当读成功时,read 返回实际所读的字节数。
如果返回的值是 0 表示已经读到文件的结束了,小于 0 表示出现了错误。
如果错误为 EINTR 说明读是由中断引起的;如果是 ECONNREST 表示网络连接出了问题。
write()
write 函数将 buf 中的 nbytes 字节内容写入文件描述符 fd。
成功时返回写的字节数。失败时返回 -1,并设置 errno 变量。
在网络程序中,当我们向套接字文件描述符写时有俩种可能。
(1)write 的返回值大于 0,表示写了部分或者是全部的数据。
(2)返回的值小于 0,此时出现了错误。
如果错误为 EINTR 表示在写的时候出现了中断错误;如果为 EPIPE 表示网络连接出现了问题(对方已经关闭了连接)。
Socket 中 TCP 的三次握手建立连接
我们知道 TCP 建立连接要进行 “三次握手”,即交换三个分组。大致流程如下:
客户端向服务器发送一个 SYN J
服务器向客户端响应一个 SYN K,并对 SYN J 进行确认 ACK J+1
客户端再想服务器发一个确认 ACK K+1
只有就完了三次握手,但是这个三次握手发生在 Socket 的那几个函数中呢?请看下图:
从图中可以看出:
(1)当客户端调用 connect 时,触发了连接请求,向服务器发送了 SYN J 包,这时 connect 进入阻塞状态;
(2)服务器监听到连接请求,即收到 SYN J 包,调用 accept 函数接收请求向客户端发送 SYN K ,ACK J+1,这时 accept 进入阻塞状态;
(3)客户端收到服务器的 SYN K ,ACK J+1 之后,这时 connect 返回,并对 SYN K 进行确认;
(4)服务器收到 ACK K+1 时,accept 返回,至此三次握手完毕,连接建立。
Socket 中 TCP 的四次握手释放连接
上面介绍了 socket 中 TCP 的三次握手建立过程,及其涉及的 socket 函数。现在我们介绍 socket 中的四次握手释放连接的过程,请看下图:
图示过程如下:
某个应用进程首先调用 close 主动关闭连接,这时 TCP 发送一个 FIN M;
另一端接收到 FIN M 之后,执行被动关闭,对这个 FIN 进行确认。它的接收也作为文件结束符传递给应用进程,因为 FIN 的接收意味着应用进程在相应的连接上再也接收不到额外数据;
一段时间之后,接收到文件结束符的应用进程调用 close 关闭它的 socket。这导致它的 TCP 也发送一个 FIN N;
接收到这个 FIN 的源发送端 TCP 对它进行确认。
这样每个方向上都有一个 FIN 和 ACK。
————
今天的分享就到这里了,大家要好好学C++哟~
最新内容
手机 |
相关内容
创造多样信号的万能工具:函数/任意
创造多样信号的万能工具:函数/任意波形发生器,函数,波形,信号,工具,创造,时钟,函数/任意波形发生器是一种用于产生各种形状和频率的机器人自动上下料,工业智能化进程的
机器人自动上下料,工业智能化进程的重要里程碑,进程,里程碑,自动,错误,危险,安全性,机器人自动上下料是工业智能化进程的重要里程碑,什么是电脑数据存贮器,电脑数据存贮
什么是电脑数据存贮器,电脑数据存贮器的基本结构、特性、工作原理、分类、使用电源、基本存储技术及市场前景,数据,分类,工作原理,Camelot:超强大的PDF表格提取器
Camelot:超强大的PDF表格提取器,文件,支持,边界,配置,数据,表格布局,Camelot是一个强大的PDF表格提取器,它可以从PDF文件中提取表格数什么是非接触式读写器芯片,非接触式
什么是非接触式读写器芯片,非接触式读写器芯片的组成、特点、原理、分类、操作规程及发展趋势,芯片,发展趋势,分类,安全性,信号,解「语音芯片」常见的OTP芯片故障分
「语音芯片」常见的OTP芯片故障分析,芯片,故障分析,常见,语音,读取,损坏,TPS62290DRVR语音芯片是一种集成了语音识别、语音合成和语基于行列寻址的PMUT柔性曲面阵列设
基于行列寻址的PMUT柔性曲面阵列设计,曲面,寻址,阵列,传感器,控制,读取,柔性曲面阵列(PMUT)是一种新型的EP3C40F484I7N压电传感器,能简易函数发生器电路图
简易函数发生器电路图,电路图,信号处理电子电路图,简易函数发生器电路图 函数发生,用一块或非门电路和两只反相器构成简单的单稳态