news 2026/4/18 12:01:58

TCP 协议核心与 Socket 编程入门:从理论到代码实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TCP 协议核心与 Socket 编程入门:从理论到代码实战

一、 TCP 的“三大法宝”

TCP(传输控制协议)之所以强大,是因为它拥有三个核心特性,这也是面试中必问的考点。

1. 面向连接 (Connection-Oriented)

  • 比喻:像打电话。通话前必须先拨通(建立连接),说完后必须挂断(断开连接)。
  • 机制
    • 三次握手:建立双向连接(你听得到吗?听得到。我也听得到。)。
    • 四次挥手:断开双向连接。
  • 意义:确保通信双方都在线,且都知道要开始或结束通信。

2. 安全/可靠机制 (Reliable)

  • 问题:网络是不稳定的,数据包可能会丢。
  • 解决
    • 校验:每收到一个包,都要检查数据有没有坏。
    • 确认与重传:发完数据后,如果收不到对方的“收到确认(ACK)”,TCP 会自动重传。
  • 结论:TCP 保证数据不丢失、不重复、按顺序到达

3. 流式传输 (Stream-Oriented)

  • 比喻:像水管里的水流。
  • 特点:发送方和接收方的速率可以不对等
    • 例子:发送方每 5 秒倒一大桶水(4KB),接收方可以用小勺子每秒喝一点(100字节)。只要内核缓冲区没满,数据就不会丢。
  • 差异:UDP 是“报文”传输(发一个包就是一个包),而 TCP 是“流”(没有明显的边界)。

二、 套接字通信流程图谱

写 Socket 代码,其实就是在这个流程图中填空:

阶段服务器端 (Server)客户端 (Client)
准备1.socket()创建套接字1.socket()创建套接字
寻址2.bind()绑定 IP+端口-
就绪3.listen()设置监听状态-
连接4.accept()阻塞等待连接2.connect()发起连接
通信5.read()/write()收发数据3.write()/read()收发数据
结束6.close()关闭连接4.close()关闭连接

三、 代码实战:编写一个回声服务器 (Echo Server)

我们将实现一个经典的 Echo 服务:客户端发什么,服务器就回什么。

1. 服务器端代码 (server.c)

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<arpa/inet.h>#include<sys/socket.h>#definePORT8888intmain(){// 1. 创建套接字 (AF_INET=IPv4, SOCK_STREAM=TCP)intserver_fd=socket(AF_INET,SOCK_STREAM,0);if(server_fd==-
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 7:37:26

智能算法实践宝典:LLM如何重塑工业界技术研究新范式

智能算法实践宝典&#xff1a;LLM如何重塑工业界技术研究新范式 【免费下载链接】Algorithm-Practice-in-Industry 搜索、推荐、广告、用增等工业界实践文章收集&#xff08;来源&#xff1a;知乎、Datafuntalk、技术公众号&#xff09; 项目地址: https://gitcode.com/gh_mi…

作者头像 李华
网站建设 2026/4/18 10:05:41

Qwen3-VL-WEBUI生产环境部署:高可用性配置实战案例

Qwen3-VL-WEBUI生产环境部署&#xff1a;高可用性配置实战案例 1. 引言 随着多模态大模型在实际业务场景中的广泛应用&#xff0c;如何将强大的视觉-语言模型稳定、高效地部署到生产环境中&#xff0c;成为企业落地AI能力的关键挑战。Qwen3-VL-WEBUI作为阿里开源的Qwen系列最…

作者头像 李华
网站建设 2026/4/18 8:13:28

Tabular Editor 2.x:数据分析师的终极模型管理神器

Tabular Editor 2.x&#xff1a;数据分析师的终极模型管理神器 【免费下载链接】TabularEditor This is the code repository and issue tracker for Tabular Editor 2.X (free, open-source version). This repository is being maintained by Daniel Otykier. 项目地址: ht…

作者头像 李华
网站建设 2026/4/16 9:02:21

Windows 7终极Python安装指南:轻松实现老旧系统现代化

Windows 7终极Python安装指南&#xff1a;轻松实现老旧系统现代化 【免费下载链接】PythonWin7 Python 3.9 installers that support Windows 7 SP1 and Windows Server 2008 R2 项目地址: https://gitcode.com/gh_mirrors/py/PythonWin7 还在为Windows 7系统无法安装最…

作者头像 李华
网站建设 2026/4/18 11:02:09

Go存储生态深度解析:构建高性能分布式系统的架构哲学

Go存储生态深度解析&#xff1a;构建高性能分布式系统的架构哲学 【免费下载链接】awesome-go-storage A curated list of awesome Go storage projects and libraries 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-go-storage 在当今数据驱动的时代&#xff0…

作者头像 李华
网站建设 2026/4/18 8:39:16

Wan2.2-Animate完全指南:零门槛制作专业级动画的终极方案

Wan2.2-Animate完全指南&#xff1a;零门槛制作专业级动画的终极方案 【免费下载链接】Wan2.2-Animate-14B 项目地址: https://ai.gitcode.com/hf_mirrors/Wan-AI/Wan2.2-Animate-14B 阿里巴巴通义实验室最新推出的Wan2.2-Animate-14B开源项目&#xff0c;正在彻底改变…

作者头像 李华