2026年物业门控五金耗材推荐榜:中企创联工业品,小区/写字楼/物业多场景门控配件全覆盖
2026/3/1 13:31:04
在网络编程的世界里,TCP(传输控制协议)是应用最广泛的基础协议之一。无论是网页浏览、文件传输还是数据库连接,背后都离不开 TCP 的支持。本文将结合 Linux 下的 C 语言 Socket API,为你详细剖析 TCP 通信的流程与核心实现。
TCP 的核心特性可以概括为:面向连接、安全可靠、流式传输。在开发时,服务器端和客户端遵循不同的逻辑流程:
bind(绑定地址) ->listen(设置监听) ->accept(阻塞等待连接) ->recv/send(收发数据) ->close。connect(连接服务器) ->send/recv(收发数据) ->close。计算机硬件有大端和小端之分,但网络数据传输规定必须使用大端模式。
htons()(Host to Network Short) 用于转换端口;inet_pton()用于将字符串 IP 转换为网络字节序的整数。listen():将主动套接字变为被动监听套接字。backlog参数通常设为 128,代表内核处理连接请求的队列上限。accept():这是一个阻塞函数。当没有客户端连接时,程序会停在这里。连接成功后,它会返回一个新的文件描述符,专门负责与该客户端通信。connect():客户端调用此函数发起“三次握手”。我们将编写一个简单的“回声服务器”(Echo Server):客户端发送什么,服务器就回复什么。
server.c)#include<stdio.h>#include<ctype.h>#include<arpa/inet.h>#include<unistd.h>#include<string.h>intmain(){// 1. 创建监听套接字intlfd=socket(AF_INET,SOCK_STREAM,0);// 2. 绑定本地IP和端口structsockaddr_insaddr;saddr.sin_family=AF_INET;saddr.sin_port=htons(8989);// 端口转换为大端saddr.sin_addr.s_addr=INADDR_ANY;// 监听本机所有IP