ESP32-C3入门教程 网络篇⑤——TCP Socket Client 客户端应用示例
Posted 小康师兄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ESP32-C3入门教程 网络篇⑤——TCP Socket Client 客户端应用示例相关的知识,希望对你有一定的参考价值。
文章目录
一、前言
本文基于VS Code IDE进行编程、编译、下载、运行等操作
基础知识点请查阅:ESP32-C3入门教程 基础篇①——基于VS Code构建Hello World
二、Socket模式
Socket有两种模式
- Server客户端,连接到别人的Socket Server,然后进行通信
- Client服务器,开个Socket Server,供其他Client连接,然后进行通信。
本博文描述ESP32-C3作为TCP Socket Client 客户端,与Socket Server进行通信的示例。
三、快速运行
- 示例项目中,选择
protocols
—>sockets
->tcp_server
menuconfig
配置ESP32C3-Specific
—>Rec 0
- 芯片选择
ESP32-C3(Built-in USB JTAG)
- 快速运行
ESP-IDF Build, Flash and Monitor
(左下角)
四、运行效果
- 用网络调试助手创建TCP Server
- 修改WiFi AP的
SSID
和password
- 修改Socket的
IP Address
和Port
- 通过网络调试助手发送
hello
五、程序流程
nvs_flash_init
,初始化默认 NVS 分区esp_netif_init
,初始化底层TCP/IP堆栈esp_event_loop_create_default
,创建默认事件循环example_connect
,连接到指定WiFisocket
,同lwip_socket
,创建一个socketconnect
,同lwip_connect
,连接到指定socket和指定ip端口send
,同lwip_send
,发送数据Message from ESP32 @小康师兄
recv
,同lwip_recv
,堵塞接收数据shutdown
,同lwip_shutdown
,关闭Socket的发送和接收close
,同lwip_close
,释放Socket资源
六、关键函数
6.1 Socket创建
domain
:创建Socket的领域,AF_UNIX
/AF_INET
type
:创建Socket的类型,SOCK_STREAM
/SOCK_DGRAM
/SOCK_SEQPACKET
[SOCK_STREAM=TCP]
提供有序的、可靠的、双向的、连接模式的字节流,并且可以为带外数据提供传输机制。[SOCK_DGRAM=UDP]
提供数据报,它们是无连接模式、固定最大长度的不可靠消息。[SOCK_SEQPACKET=RAW]
为记录提供有序的、可靠的、双向的、连接模式的传输路径。
protocol
:创建Socket的协议
int socket(int domain, int type, int protocol);
6.2 Socket连接
socket
,socket的文件描述符address
,连接的地址address_len
,连接的地址长度
int connect(int socket, const struct sockaddr *address, socklen_t address_len);
6.3 发送数据
socket
,socket的文件描述符buffer
,指向包含要发送的消息的缓冲区。length
,以字节为单位指定消息的长度。flags
,指定消息传输的类型
ssize_t send(int socket, const void *buffer, size_t length, int flags);
6.4 接收数据
socket
,socket的文件描述符buffer
,指向应存储消息的缓冲区。length
,指定缓冲区参数指向的缓冲区的长度(以字节为单位) 。flags
,指定消息接收的类型。
ssize_t recv(int socket, void *buffer, size_t length, int flags);
6.5 Socket关闭
socket
,socket的文件描述符how
,SHUT_RD
/SHUT_WR
/SHUT_RDWR
SHUT_RD
,禁用进一步的接收操作。SHUT_WR
,禁用进一步的发送操作。SHUT_RDWR
,禁用进一步的发送和接收操作。
int shutdown(int socket, int how);
6.6 Socket释放
socket
,socket的文件描述符
int close(int socket)
七、参考
lwIP - ESP32-C3 - —ESP-IDF 编程指南 latest 文档
觉得好,就一键三连呗(点赞+收藏+关注)
以上是关于ESP32-C3入门教程 网络篇⑤——TCP Socket Client 客户端应用示例的主要内容,如果未能解决你的问题,请参考以下文章
ESP32-C3入门教程 网络篇①——WiFi Scan 快速扫描附近AP无线热点
ESP32C3基于Arduino框架下的 ESP32 RainMaker开发示例教程