1. TCP Socket 是什么
TCP:面向连接、可靠、有序、字节流(stream)
Socket:操作系统提供的网络编程接口(文件描述符/句柄)
一句话:
TCP socket 编程就是让两台主机通过"可靠字节流通道"收发数据。
TCP的关键特点 (决定代码写法)
面向连接:先 connect/accept 才能 send/recv
字节流:没有"消息边界" → 会出现粘包/拆包
可靠有序:丢包重传由内核处理,但你仍要处理断线、超时等
2. TCP 通信流程(必须背熟)
服务端(Server)
socket() 创建监听套接字
bind() 绑定 IP:端口
listen() 进入监听状态
accept() 接受连接 → 得到"已连接socket"
recv()/send() 收发数据(循环)
close() 关闭
客户端(Client)
socket() 创建套接字
connect() 连接服务器
send()/recv() 收发数据(循环)
close() 关闭
3. 核心 API 速查(Linux)
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
cpp
socket(int domain, int type, int protocol)
AF_INET(IPv4) / AF_INET6
SOCK_STREAM(TCP)
bind(fd, sockaddr*, len) 绑定地址
listen(fd, backlog) 监听
accept(fd, ...) 接受连接
connect(fd, ...) 发起连接
send(fd, buf, len, flags) 发送
recv(fd, buf, len, flags) 接收
close(fd) 关闭