news 2026/4/18 10:20:21

TCP 通信全流程:服务器与客户端

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TCP 通信全流程:服务器与客户端

一、 通信流程总览:像“打电话”一样简单

我们可以把 TCP 通信比作一次传统的电话服务:

  • 服务器(接线员)

    1. 装个电话机 (socket)。
    2. 申请一个固定电话号码 (bind)。
    3. 把电话线插好,确保能听到铃声 (listen)。
    4. 电话响了,接起来 (accept)。
    5. 开始聊天 (read/write)。
    6. 挂断 (close)。
  • 客户端(拨打者)

    1. 装个电话机 (socket)。
    2. 不需要申请固定号码(系统自动分配临时号码)。
    3. 拨打服务器的电话号码 (connect)。
    4. 开始聊天 (read/write)。
    5. 挂断 (close)。

二、 流程深度对比

1. 服务器端:六步走(重在“等”)

服务器的核心任务是等待。它有两个关键的文件描述符:

  • 监听描述符 (lfd):仅用于检测有没有人打电话进来。
  • 通信描述符 (cfd):当电话接通后,产生一个新的 fd 专门用来通话。

流程

  1. socket(): 创建监听 fd。
  2. bind(): 绑定本地 IP+端口(必须做,否则客户端找不到)。
  3. listen(): 开启监听模式。
  4. accept():阻塞等待,直到连接建立,返回 cfd。
  5. read/write(): 使用 cfd 通信。
  6. close(): 关闭 cfd(结束通话)或 lfd(关停服务)。

2. 客户端:四步走(重在“连”)

客户端的核心任务是发起。它只需要一个文件描述符。

流程

  1. socket(): 创建通信 fd。
  2. connect(): 主动连接服务器的 IP+端口。
    • 注:这里替代了服务器端的 bind+listen+accept 复杂过程。
  3. read/write(): 数据收发。
  4. close(): 关闭 fd。

三、 代码实战:完整的问候系统

我们来实现一个简单的业务:客户端发送自己的名字,服务器回复 “Hello, [名字]”。

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

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

阅读APP书源配置全攻略:从零开始搭建个人数字图书馆

阅读APP书源配置全攻略&#xff1a;从零开始搭建个人数字图书馆 【免费下载链接】Yuedu &#x1f4da;「阅读」APP 精品书源&#xff08;网络小说&#xff09; 项目地址: https://gitcode.com/gh_mirrors/yu/Yuedu 在数字阅读时代&#xff0c;如何快速获取海量小说资源成…

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

StructBERT零样本分类性能测试:不同行业数据

StructBERT零样本分类性能测试&#xff1a;不同行业数据 1. 引言&#xff1a;AI 万能分类器的崛起 在当今信息爆炸的时代&#xff0c;文本数据的自动化处理已成为企业提升效率的核心手段。无论是客服工单、用户反馈、新闻资讯还是社交媒体内容&#xff0c;都需要快速准确地进…

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

如何快速掌握GoldHEN作弊管理器的完整使用指南

如何快速掌握GoldHEN作弊管理器的完整使用指南 【免费下载链接】GoldHEN_Cheat_Manager GoldHEN Cheats Manager 项目地址: https://gitcode.com/gh_mirrors/go/GoldHEN_Cheat_Manager GoldHEN作弊管理器是专为PS4破解环境设计的开源工具&#xff0c;让普通玩家也能轻松…

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

阅读APP书源配置全攻略:三步构建个人专属小说库

阅读APP书源配置全攻略&#xff1a;三步构建个人专属小说库 【免费下载链接】Yuedu &#x1f4da;「阅读」APP 精品书源&#xff08;网络小说&#xff09; 项目地址: https://gitcode.com/gh_mirrors/yu/Yuedu 还在为寻找心仪小说而发愁吗&#xff1f;&#x1f4da;「阅…

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

PyNifly插件:重塑Blender与Nif格式交互的游戏模组开发体验

PyNifly插件&#xff1a;重塑Blender与Nif格式交互的游戏模组开发体验 【免费下载链接】PyNifly Export/Import tools between Blender and the Nif format, using Bodyslide/Outfit Studios Nifly layer. Supports Skyrim LE, Skyrim SE, Fallout 4, Fallout New Vegas, Fallo…

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

UEDumper:跨版本虚幻引擎逆向分析与实时编辑解决方案

UEDumper&#xff1a;跨版本虚幻引擎逆向分析与实时编辑解决方案 【免费下载链接】UEDumper The most powerful Unreal Engine Dumper and Editor for UE 4.19 - 5.3 项目地址: https://gitcode.com/gh_mirrors/ue/UEDumper 在虚幻引擎逆向工程领域&#xff0c;开发者经…

作者头像 李华