一、Socket 网络编程步骤
- TCP 协议流程
- 服务端:创建 socket → 绑定 bind → 监听 listen → 接受 accept → 读写 recv/send → 关闭 close
- 客户端:创建 socket → 连接 connect → 读写 recv/send → 关闭 close
- UDP 协议流程
- 服务端:创建 socket → 绑定 bind → 接收 recvfrom
- 客户端:创建 socket → 发送 sendto
二、核心接口详解
| 函数 | 作用 |
|---|---|
socket() | 创建套接字 |
bind() | 绑定 IP 和端口 |
listen() | 设置监听队列 |
accept() | 接受客户端连接 |
connect() | 发起连接请求 |
recv()/send() | TCP 数据收发 |
recvfrom()/sendto() | UDP 数据收发 |
setsockopt() | 设置套接字选项 |
三、Socket 在网络层级中的位置
Socket 属于应用层与传输层之间的接口层,用于屏蔽底层协议细节。它不是传输层的一部分,而是对 TCP/UDP 协议的封装和抽象。
- 不属于传输层,但封装了其核心功能
- 不属于应用层,但为其提供唯一的通信入口
- 间接涉及网络层和数据链路层,但仅作为参数传递通道
四、Socket 常用类(C++)
// Linux 系统常用
#include <sys/socket.h>
#include <netinet/in.h>
// Windows 系统常用
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
⚠️ 注意:C++ 标准库未提供原生 Socket 类,通常需调用操作系统 API 或使用第三方库(如 boost::asio)
五、高并发场景优化方案
- IO 多路复用(select/poll/epoll)
- 非阻塞 IO + 事件驱动
- 连接复用(Keep-Alive)


