1、AP、STA的含义

AP:Access Point,访问接入点,终端设备通过访问接入点接入网络,ESP8266在AP模式相当于创建了一个WiFi局域网;

STA:Station,站点,就是所谓的终端设备,ESP8266在STA模式是作为终端设备接入另一个WiFi;

2、设置ESP8266为STA模式

像手机、笔记本一样,接入WiFi,起码要知道WiFi名和密码;

还要配置IP地址、子网掩码、默认网关,不过默认启动DHCP可以自动获取IP等;

2.1、使能STA模式、配置WiFi名和密码

#define ESP8266_STA_SSID         "402"
#define ESP8266_STA_PASS        "abc123456"//初始化STA模式,设置WiFi名和密码
void ICACHE_FLASH_ATTR STA_mode_init()
{struct station_config sta_cfg;os_memset(&sta_cfg, 0, sizeof(struct station_config));   // 结构体清0wifi_set_opmode(0x01);                                  // 设置为STA模式,并保存到Flashos_strcpy(sta_cfg.ssid,ESP8266_STA_SSID);               // 设置SSID(将字符串复制到ssid数组)os_strcpy(sta_cfg.password,ESP8266_STA_PASS);           // 设置密码(将字符串复制到password数组)sta_cfg.bssid_set = 0;wifi_station_set_config(&sta_cfg);                     //设置STA模式
}

2.2、初始化TCP通信

UDP、TCP的内容前篇已经介绍过,AP或STA模式与其无关,这里把ESP8266当做TCP的服务器端,注意,要在连接完WiFi之后再初始化TCP通信,可通过wifi_station_get_connect_status函数获取连接状态

os_timer_t timer_wifi_check;             //检测wifi连接成功的定时器//检测wifi连接成功的定时器
void timer_wifi_check_callback()
{struct ip_info IP_info;u8 ip_dec[4];u8 buffer[20]; if( wifi_station_get_connect_status() == STATION_GOT_IP ){    // 判断连接状态,是否获取IPwifi_get_ip_info(STATION_IF,&IP_info);   //32位二进制IP地址,将它转换为点分十进制的形式ip_dec[0] = IP_info.ip.addr;ip_dec[1] = IP_info.ip.addr>>8;ip_dec[2] = IP_info.ip.addr>>16;ip_dec[3] = IP_info.ip.addr>>24;// 打印ESP8266的IP地址os_printf("ESP8266_IP = %d.%d.%d.%d\n",ip_dec[0],ip_dec[1],ip_dec[2],ip_dec[3]);os_sprintf(buffer,"IP:%d.%d.%d.%d",ip_dec[0],ip_dec[1],ip_dec[2],ip_dec[3]);oled_show_string(0,0,buffer,FONT_8x16);//初始化TCPTCP_port8266_init();//关闭定时器os_timer_disarm(&timer_wifi_check);}else{                                         //等待WiFi连接os_printf("connecting wifi ......\n");}
}void ICACHE_FLASH_ATTR timer_init()
{os_timer_disarm(&timer_wifi_check);os_timer_setfn(&timer_wifi_check,timer_wifi_check_callback,NULL);os_timer_arm(&timer_wifi_check,1000,1);        //1s}

3、下载、验证

在得知了ESP8266的IP之后,加上程序中写好的端口号,网络调试助手就作为客户端连接服务器,并发送数据了;

作为服务器,当收到数据后你也可以加两行代码打印客户端的IP和端口,知道是谁给你发的;

void ICACHE_FLASH_ATTR TCP_recv_callback(void * arg, char * pdata, unsigned short len)
{struct espconn * T_arg = arg;     // 缓存网络连接结构体指针u8 client_ip[4];os_printf("\nESP8266_Receive_Data = %s\n",pdata);      // 串口打印接收到的数据os_memcpy(client_ip,T_arg->proto.tcp->remote_ip,4);os_printf("client ip:%d.%d.%d.%d,port:%d\n",client_ip[0],client_ip[1],client_ip[2],client_ip[3],T_arg->proto.tcp->remote_port);// 向对方发送应答espconn_send(T_arg,"ESP8266_TCP_Recv_OK",os_strlen("ESP8266_TCP_Recv_OK"));}

ESP8266_STA模式相关推荐

  1. 大淘宝服务端技术干货沉淀和总结

    网络基础 TCP三次握手 三次握手过程 客户端--发送带有SYN标志的数据包--服务端 一次握手 Client进入syn_sent状态 服务端--发送带有SYN/ACK标志的数据包--客户端 二次握手 ...

  2. python 各种模块学习

    from:https://blog.csdn.net/weiwangchao_/article/details/70570508 转载:.... Python的模块大全,很全,有详细介绍! 另外附Py ...

  3. 物联网专题22:STA模式

    STA 之前使用 ESP8266 的 AP 模式,即不论是 Server 还是 Client,我们都是接入到 8266 创建的 WiFi 热点.现在配置 8266 的STA模式,即将 8266 接入到 ...

  4. 【Docker】容器的几种网络模式

    当你使用Docker时,你会发现需要了解很多关于网络的知识.Docker作为目前最火的轻量级容器引擎,因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求.本文介绍了Docker的4种 ...

  5. kali2020进入单模式_蚂蚁集团技术专家山丘:性能优化的常见模式及趋势

    陈显铭(山丘) 读完需要 6分钟 速读仅需 2 分钟 陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构.服务化.性能优化等有深入的理解.参与支付宝支付链路核心系统,设计.调优应用系统关键能力, 高效 ...

  6. 2022-2028年中国交通建设PPP模式深度分析及发展战略研究报告(全卷)

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了PPP模式行业相关概述.中国PPP模式行业运行环境.分析了中国PPP ...

  7. Redis 笔记(10)— 发布订阅模式(发布订阅单个信道、订阅信道后的返回值分类、发布订阅多个信道)

    1. 发布-订阅概念 发布-订阅 模式包含两种角色,分别为发布者和订阅者. 订阅者可以订阅一个或者若干个频道(channel): 而发布者可以向指定的频道发送消息,所有订阅此频道的订阅者都可以收到此消 ...

  8. 2022-2028年中国新型氟塑料行业市场发展模式及投资机会预测报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了新型氟塑料行业相关概述.中国新型氟塑料行业运行环境.分析了中国新型氟 ...

  9. RabbitMQ 入门系列(11)— RabbitMQ 常用的工作模式(simple模式、work模式、publish/subscribe模式、routing模式、topic模式)

    1. simple 模式 simple 模式是最简单最常用的模式 2. work 模式 work 模式有多个消费者 消息产生者将消息放入队列.生产者系统不需知道哪一个任务执行系统在空闲,直接将任务扔到 ...

最新文章

  1. mongodb3 分片集群平滑迁移
  2. 最后3天,BDTC 2019早鸟票即将售罄,超强阵容及议题抢先曝光!
  3. ABP官方文档翻译 3.1 实体
  4. ML.NET Cookbook:(5)如何查看中间过程数据?
  5. [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]
  6. javafx 自定义控件_JavaFX自定义控件– Nest Thermostat第1部分
  7. 通过预训练提升语言理解
  8. ReactHooks+Antd Checkbox Group多选框组单独禁用其中选项
  9. nlogn求最长不上升子序列
  10. Confluence 6 自定义管理员联系信息
  11. java 月度相减_java根据日期获取月龄,按照减法原理,先day相减,不够向month借;然后month相减,不够向year借;最后year相减。...
  12. 使用源码安装 PostgreSQL 12.5 主从集群
  13. uwsgi怎么启动停止
  14. Linux下安装宋体以及微软雅黑字体
  15. 寒假训练1—H(第一次写出结构体数组)
  16. 自学编程,痛并快乐着
  17. BAT前端老鸟总结:未来几年web前端发展四大趋势前瞻
  18. 黑猴子的家:Scala 中置类型
  19. Cmake编译配置opencv3.3+contrib+cuda7.5
  20. 第四章 道德经第四章原文 道德经第四章译文

热门文章

  1. [后台系统模板]优质、整洁的基于Bootstrap 3 Bootstrap 4的响应式后台管理系统模板...
  2. C - 喵帕斯之天才算数少女
  3. pip安装pytorch慢
  4. Android蓝牙初始名称修改(高通平台)
  5. 微信小程序实战之快递查询
  6. 登录功能中发送邮箱验证的简单使用
  7. Mybatis深入浅出系列
  8. 树形数据的搜索方法---javascript
  9. Linux系统简单介绍
  10. 千寻位置 开发demo_「千寻新姿势」如何接入千寻位置高精度位置服务