ESP32 之 ESP-IDF 教学(十二)WiFi篇—— LwIP 之 TCP 通信

本文章 来自原创专栏《ESP32教学专栏 (基于ESP-IDF)》,讲解如何使用 ESP-IDF 构建 ESP32 程序,发布文章并会持续为已发布文章添加新内容! 每篇文章都经过了精打细磨!

↓↓↓通过下方对话框进入专栏目录页↓↓↓
CSDN 请求进入目录       _ O x

是否进入ESP32教学导航(基于ESP-IDF)?

       确定


一、建立连接 —— ESP32 作 TCP Client客户端

1. TCP Client 的基本思路

在这里插入图片描述

2. TCP Client 代码示例

以下代码是一个函数tcp_task_client实现的是一个FreeRTOS的Task,在这个任务里完成了以下内容:

  • 等待WiFi连接成功(基于FreeRTOS API 之 事件组Event Group
  • 创建Socket对象并初始为TCP(注意代码第7行),并检测Socket是否创建成功。
  • 配置连接参数结构(结构体struct sockaddr_in类型的desk_addr
  • 循环连接服务端,直至连接成功

具体请见注释

void tcp_task_client(void *arg){
   
    xEventGroupWaitBits(wifiEvent, wifiConnectedBit, pdFALSE, pdFALSE, portMAX_DELAY);
    int _socket;

createSocket:	// 标签

    _socket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
    // AF_INET表示IPv4,AF_INET6表示IPv6

    // SOCK_STREAM表示TCP;
    // SOCK_DGRAM表示UDP;
    // SOCK_RAW表示RAW

    // protocol, 规定套接字发送和接送哪类型协议数据。
    // 最常见的是 IPPROTO_TCP, IPPROTO_UDP, IPPROTO_UDPLITE、IPPROTO_ICMP。
    // 如果 domain 和 type已经确定唯一的协议,“0(IPPROTO_IP)” 可以用来表示选择一个默认的协议。

    if(_socket < 0){
   
        printf("Socket 创建失败, 错误代码:%d\n", errno);
        vTaskDelete(NULL);
    }else{
   
        printf("Socket 创建成功");
    }

    struct sockaddr_in desk_addr = {
   
    // 下边这个IP 192.168.31.138和端口号8080是自己设置的,请按需要修改
        .sin_addr.s_addr = inet_addr("192.168.31.138")<
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Augtons正(单片机)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值