套接字(Socket)
找到 IP 只是找到了那台机器,但一台机器上同时跑着浏览器、微信、游戏,数据到底该交给谁?靠的是端口号。套接字就是”IP + 端口”的组合,操作系统用它来精确找到目标进程。
通信流程
客户端和服务端的角色不同,流程也不对称:
服务端先准备好,客户端再来连。
| 步骤 | 服务端 | 客户端 |
|---|---|---|
| 1 | 创建套接字 | 创建套接字 |
| 2 | bind — 绑定 IP 和端口,声明”我在这里” | — |
| 3 | listen — 开始监听,等待连接请求 | — |
| 4 | accept — 阻塞等待,直到客户端连进来 | connect — 向服务端发起连接 |
| 5 | 通信(收发数据) | 通信(收发数据) |
| 6 | 关闭连接 | 关闭连接 |
服务端的 accept 会一直等,直到有客户端 connect 进来,两边才同时进入通信阶段。
选 TCP 还是 UDP?
创建套接字的时候就要选好:
如果你正在跟随梳理, 返回 MOC←