TCP/IP 是互联网使用的通信协议族(一组规则的集合),设备之间按这些规则交换数据。它分成几层,每层各司其职,就像寄快递:应用层写内容(HTTP/MQTT 数据)、传输层贴快递单(TCP/UDP 端口)、网络层写收件地址(IP 地址)、链路层负责实际运输(Wi-Fi/以太网)。
用大白话讲:IP 地址决定“发给谁”,端口号决定“发给哪个程序”,TCP/UDP 决定“怎么送”——TCP 像挂号信(要回执、可靠、慢一点),UDP 像平信(不保证送达、快)。
TCP 与 UDP 的区别
TCP(传输控制协议):面向连接。先三次握手建立连接,数据按序送达、丢失重传。适合要求可靠的应用:文件传输、网页、MQTT、远程登录。
UDP(用户数据报协议):无连接。发出去就不管,不保证到达、可能乱序。适合实时/广播场景:音视频、游戏、设备发现(广播/组播)。
端口:0~65535 的编号,
1024以下是常见服务端口(如 HTTP 80、HTTPS 443、MQTT 1883)。
Socket 编程模型
SDK 使用 lwIP 提供的 BSD Socket API(socket / bind / connect / listen / accept / send / recv 等),与 PC 上写网络程序几乎一样。
客户端:socket() 建套接字 → connect() 连服务器 → send/recv 收发。
服务器:socket() → bind() 绑定端口 → listen() 监听 → accept() 接受连接 → recv/send 与客户端通信。
本栏目网络页面导航
以下是本栏目与 TCP/IP 相关的实验页面,都基于同一套 Wi-Fi 例程骨架:
| 页面 | 协议 | 角色 | 对应 SDK 例程 |
|---|---|---|---|
| TCP 客户端 | TCP | 客户端(连服务器) | examples/wifi/sta/wifi_tcp |
| TCP 服务器 | TCP | 服务器(等连接) | examples/wifi/sta/wifi_tcp |
| UDP 客户端 | UDP | 客户端 | 自编示例 |
| UDP 服务器 | UDP | 服务器(echo) | examples/wifi/sta/wifi_udp |
| UDP 广播 / UDP 组播 | UDP | 一对多 | 自编示例 |
FAQ
Q:TCP 和 UDP 哪个好? 没有绝对好坏:要可靠就 TCP,要快/广播就 UDP。业务需要确认送达(如控制指令)用 TCP;实时音视频、设备发现用 UDP。
Q:端口写错会怎样? 客户端连不上服务器或收不到数据;服务器绑定端口失败会打印 bind 错误。常用端口参考:HTTP 80、HTTPS 443、MQTT 1883、MQTTS 8883。
Q:为什么 TCP 服务器只能连一个客户端? 例程是单连接演示(
accept一个客户端后循环收发);实际产品可以给每个连接创建任务实现多客户端。
遇到问题?
如有其他问题,请到统一的提问与讨论区:Ai-Thinker Discussions

