chore: 将所有外部图片本地化到仓库

- 下载 110 张外部图片到根目录 images/ 文件夹
- 更新所有 README.md 中的图片引用为统一路径 images/xxx.png
- 55 张图片成功下载(PNG 格式)
- 55 张失效图片创建占位文件(SVG/PNG)
- 移除所有外部图片链接依赖

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
riba2534
2026-01-05 16:34:13 +08:00
parent d44ecdf807
commit 0d17c981ee
128 changed files with 691 additions and 232 deletions

View File

@@ -12,7 +12,7 @@ TCP 的断开连接过程比建立连接更重要,因为连接过程中一般
Linux 的 close 函数和 Windows 的 closesocket 函数意味着完全断开连接。完全断开不仅指无法传输数据,而且也不能接收数据。因此在某些情况下,通信一方单方面的断开套接字连接,显得不太优雅。如图所示:
![](https://i.loli.net/2019/01/18/5c412a8baa2d8.png)
![](images/5c412a8baa2d8.png)
图中描述的是 2 台主机正在进行双向通信,主机 A 发送完最后的数据后,调用 close 函数断开了最后的连接,之后主机 A 无法再接受主机 B 传输的数据。实际上,是完全无法调用与接受数据相关的函数。最终,由主机 B 传输的、主机 A 必须要接受的数据也销毁了。
@@ -24,7 +24,7 @@ Linux 的 close 函数和 Windows 的 closesocket 函数意味着完全断开连
此处的流可以比作水流。水朝着一个方向流动,同样,在套接字的流中,数据也只能向一个方向流动。因此,为了进行双向通信,需要如图所示的两个流:
![](https://i.loli.net/2019/01/18/5c412c3ba25dd.png)
![](images/5c412c3ba25dd.png)
一旦两台主机之间建立了套接字连接,每个主机就会拥有单独的输入流和输出流。当然,其中一个主机的输入流与另一个主机的输出流相连,而输出流则与另一个主机的输入流相连。另外,本章讨论的「优雅的断开连接方式」只断开其中 1 个流而非同时断开两个流。Linux 的 close 函数和 Windows 的 closesocket 函数将同时断开这两个流,因此与「优雅」二字还有一段距离。
@@ -70,7 +70,7 @@ howto: 传递断开方式信息
上述文件传输服务器端和客户端的数据流可以整理如图:
![](https://i.loli.net/2019/01/18/5c41326280ab5.png)
![](images/5c41326280ab5.png)
下面的代码为编程简便,省略了大量错误处理代码。
@@ -88,7 +88,7 @@ gcc file_server.c -o fserver
结果:
![](https://i.loli.net/2019/01/18/5c4140bc8db2f.png)
![](images/5c4140bc8db2f.png)
客户端接受完成后,服务器会接收到来自客户端的感谢信息。