news 2026/4/23 13:08:04

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/3 22:31:28

百度网盘秒传工具完全指南:快速转存与便捷分享

百度网盘秒传工具完全指南&#xff1a;快速转存与便捷分享 【免费下载链接】baidupan-rapidupload 百度网盘秒传链接转存/生成/转换 网页工具 (全平台可用) 项目地址: https://gitcode.com/gh_mirrors/bai/baidupan-rapidupload 还在为百度网盘大文件传输效率低而烦恼&a…

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

基于FPGA的ALU构建:手把手教程(Verilog实现)

从零开始在FPGA上构建一个ALU&#xff1a;不只是“做加法”&#xff0c;而是理解计算机的起点&#xff08;Verilog实战&#xff09;你有没有想过&#xff0c;当你写下a b这行代码时&#xff0c;背后到底发生了什么&#xff1f;它不是魔法&#xff0c;也不是抽象概念——它是硬…

作者头像 李华
网站建设 2026/4/13 23:39:55

Mod Engine 2终极指南:从入门到精通的完整教程

Mod Engine 2终极指南&#xff1a;从入门到精通的完整教程 【免费下载链接】ModEngine2 Runtime injection library for modding Souls games. WIP 项目地址: https://gitcode.com/gh_mirrors/mo/ModEngine2 还在为魂类游戏模组的复杂配置而头疼吗&#xff1f;Mod Engin…

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

终极指南:Pikafish - 免费强大的中国象棋AI引擎完全解析

终极指南&#xff1a;Pikafish - 免费强大的中国象棋AI引擎完全解析 【免费下载链接】Pikafish official-pikafish/Pikafish: Pikafish 是一个自由且强大的 UCI&#xff08;通用棋类接口&#xff09;象棋引擎&#xff0c;源自 Stockfish&#xff0c;用于分析象棋&#xff08;国…

作者头像 李华
网站建设 2026/4/23 11:17:35

3分钟掌握Flow Launcher:Windows效率神器快速上手指南

3分钟掌握Flow Launcher&#xff1a;Windows效率神器快速上手指南 【免费下载链接】Flow.Launcher :mag: Quick file search & app launcher for Windows with community-made plugins 项目地址: https://gitcode.com/GitHub_Trending/fl/Flow.Launcher 还在为Windo…

作者头像 李华
网站建设 2026/4/23 12:57:50

如何快速搭建随身开发环境:VSCode便携版终极指南

如何快速搭建随身开发环境&#xff1a;VSCode便携版终极指南 【免费下载链接】VSCode-Portable VSCode 便携版 VSCode Portable 项目地址: https://gitcode.com/gh_mirrors/vsc/VSCode-Portable 还在为每次换电脑都要重新配置开发环境而烦恼吗&#xff1f;VSCode便携版为…

作者头像 李华