diff --git a/README.md b/README.md index 5cd275b..a4ed72b 100644 --- a/README.md +++ b/README.md @@ -3690,9 +3690,9 @@ gcc oob_recv.c -o recv 运行结果: -![](images/5c4bda167ae08.svg) +![](images/5c4bda167ae08.png) -![](images/5c4bdb4d99823.svg) +![](images/5c4bdb4d99823.png) 从运行结果可以看出,send 是客户端,recv 是服务端,客户端给服务端发送消息,服务端接收完消息之后显示出来。可以从图中看出,每次运行的效果,并不是一样的。 @@ -3722,7 +3722,7 @@ fcntl(recv_sock, F_SETOWN, getpid()); MSG_OOB 的真正意义在于督促数据接收对象尽快处理数据。这是紧急模式的全部内容,而 TCP 「保持传输顺序」的传输特性依然成立。TCP 的紧急消息无法保证及时到达,但是可以要求急救。下面是 MSG_OOB 可选项状态下的数据传输过程,如图: -![](images/5c4be222845cc.svg) +![](images/5c4be222845cc.png) 上面是: @@ -3736,7 +3736,7 @@ send(sock, "890", strlen("890"), MSG_OOB); 也就是说,实际上只用了一个字节表示紧急消息。这一点可以通过图中用于传输数据的 TCP 数据包(段)的结构看得更清楚,如图: -![](images/5c4beeae46b4e.svg) +![](images/5c4beeae46b4e.png) TCP 数据包实际包含更多信息。TCP 头部包含如下两种信息: @@ -3765,7 +3765,7 @@ gcc peek_send.c -o send 结果: -![](images/5c4c0d1dc83af.svg) +![](images/5c4c0d1dc83af.png) 可以通过结果验证,仅发送了一次的数据被读取了 2 次,因为第一次调用 recv 函数时设置了 MSG_PEEK 可选项。 @@ -3802,7 +3802,7 @@ struct iovec 下图是该函数的使用方法: -![](images/5c4c61b07d207.svg) +![](images/5c4c61b07d207.png) writev 的第一个参数,是文件描述符,因此向控制台输出数据,ptr 是存有待发送数据信息的 iovec 数组指针。第三个参数为 2,因此,从 ptr 指向的地址开始,共浏览 2 个 iovec 结构体变量,发送这些指针指向的缓冲数据。 @@ -3902,7 +3902,7 @@ gcc readv.c -o rv 运行结果: -![](images/5c4c718555398.svg) +![](images/5c4c718555398.png) 从图上可以看出,首先截取了长度为 5 的数据输出,然后再输出剩下的。 @@ -3912,7 +3912,7 @@ gcc readv.c -o rv 其意义在于减少数据包个数。假设为了提高效率在服务器端明确禁用了 Nagle 算法。其实 writev 函数在不采用 Nagle 算法时更有价值,如图: -![](images/5c4c731323e19.svg) +![](images/5c4c731323e19.png) ### 13.3 基于 Windows 的实现 diff --git a/ch13/README.md b/ch13/README.md index e655193..71c46cd 100644 --- a/ch13/README.md +++ b/ch13/README.md @@ -62,9 +62,9 @@ gcc oob_recv.c -o recv 运行结果: -![](images/5c4bda167ae08.svg) +![](images/5c4bda167ae08.png) -![](images/5c4bdb4d99823.svg) +![](images/5c4bdb4d99823.png) 从运行结果可以看出,send 是客户端,recv 是服务端,客户端给服务端发送消息,服务端接收完消息之后显示出来。可以从图中看出,每次运行的效果,并不是一样的。 @@ -94,7 +94,7 @@ fcntl(recv_sock, F_SETOWN, getpid()); MSG_OOB 的真正意义在于督促数据接收对象尽快处理数据。这是紧急模式的全部内容,而 TCP 「保持传输顺序」的传输特性依然成立。TCP 的紧急消息无法保证及时到达,但是可以要求急救。下面是 MSG_OOB 可选项状态下的数据传输过程,如图: -![](images/5c4be222845cc.svg) +![](images/5c4be222845cc.png) 上面是: @@ -108,7 +108,7 @@ send(sock, "890", strlen("890"), MSG_OOB); 也就是说,实际上只用了一个字节表示紧急消息。这一点可以通过图中用于传输数据的 TCP 数据包(段)的结构看得更清楚,如图: -![](images/5c4beeae46b4e.svg) +![](images/5c4beeae46b4e.png) TCP 数据包实际包含更多信息。TCP 头部包含如下两种信息: @@ -137,7 +137,7 @@ gcc peek_send.c -o send 结果: -![](images/5c4c0d1dc83af.svg) +![](images/5c4c0d1dc83af.png) 可以通过结果验证,仅发送了一次的数据被读取了 2 次,因为第一次调用 recv 函数时设置了 MSG_PEEK 可选项。 @@ -174,7 +174,7 @@ struct iovec 下图是该函数的使用方法: -![](images/5c4c61b07d207.svg) +![](images/5c4c61b07d207.png) writev 的第一个参数,是文件描述符,因此向控制台输出数据,ptr 是存有待发送数据信息的 iovec 数组指针。第三个参数为 2,因此,从 ptr 指向的地址开始,共浏览 2 个 iovec 结构体变量,发送这些指针指向的缓冲数据。 @@ -274,7 +274,7 @@ gcc readv.c -o rv 运行结果: -![](images/5c4c718555398.svg) +![](images/5c4c718555398.png) 从图上可以看出,首先截取了长度为 5 的数据输出,然后再输出剩下的。 @@ -284,7 +284,7 @@ gcc readv.c -o rv 其意义在于减少数据包个数。假设为了提高效率在服务器端明确禁用了 Nagle 算法。其实 writev 函数在不采用 Nagle 算法时更有价值,如图: -![](images/5c4c731323e19.svg) +![](images/5c4c731323e19.png) ### 13.3 基于 Windows 的实现 diff --git a/images/5c4bda167ae08.svg b/images/5c4bda167ae08.png similarity index 100% rename from images/5c4bda167ae08.svg rename to images/5c4bda167ae08.png diff --git a/images/5c4bdb4d99823.svg b/images/5c4bdb4d99823.png similarity index 100% rename from images/5c4bdb4d99823.svg rename to images/5c4bdb4d99823.png diff --git a/images/5c4be222845cc.svg b/images/5c4be222845cc.png similarity index 100% rename from images/5c4be222845cc.svg rename to images/5c4be222845cc.png diff --git a/images/5c4beeae46b4e.svg b/images/5c4beeae46b4e.png similarity index 100% rename from images/5c4beeae46b4e.svg rename to images/5c4beeae46b4e.png diff --git a/images/5c4c0d1dc83af.svg b/images/5c4c0d1dc83af.png similarity index 100% rename from images/5c4c0d1dc83af.svg rename to images/5c4c0d1dc83af.png diff --git a/images/5c4c61b07d207.svg b/images/5c4c61b07d207.png similarity index 100% rename from images/5c4c61b07d207.svg rename to images/5c4c61b07d207.png diff --git a/images/5c4c718555398.svg b/images/5c4c718555398.png similarity index 100% rename from images/5c4c718555398.svg rename to images/5c4c718555398.png diff --git a/images/5c4c731323e19.svg b/images/5c4c731323e19.png similarity index 100% rename from images/5c4c731323e19.svg rename to images/5c4c731323e19.png