通常,为了让手机连上一个WiFi热点,基本上都是打开手机设置里面的WiFi设置功能,然后会看到里面有个WiFi热点列表,然后选择你要的连接上去。
基本上你只要打开手机连接WiFi功能,都会发现附近有超级多的各种来路不明的WiFi热点(连接有风险需谨慎),那么手机是怎么知道附近的WiFi的呢?
通常,无线网络提供的WiFi热点,大部分都开放了SSID广播(记得之前楼主讲过WiFi热点也可以隐藏的),Scan WiFi的功能就是扫描出所有附近的WiFi热点的SSID信息,这样一来,客户端就可以根据需要选择不同的SSID连入对应的无线网络中。
在前面章节里面,博主讲解了ESP8266WiFi库里面的一些重要内容。这里回顾一下博主讲了哪些重要内容:
ESP8266WiFiSTA库 ------ STA模式专用库;
ESP8266WiFiAP库 ------ soft-AP模式专用库;
ESP8266WiFiScan库 ------ WiFi扫描功能库;
ESP8266WiFiGeneric库 ------ WiFi基础功能库(WiFi事件、WiFi模式);
WiFi模块的工作模式:STA模式、soft-AP模式和STA兼soft-AP模式;
注意点:
这些功能的引入都是一句简单的代码
#include <ESP8266WiFi.h> 当然,ESP8266WiFi库里面还有其他重要内容,比如跟http相关的 WiFiClient、WiFiServer,跟https相关的 WiFiClientSecure、WiFiServerSecure。
终于,到这篇,可以看到跟网络请求有关的东西了。
那肯定就会有很多人会问:到底什么时候用到哪个呢?
在这里,博主给大家概括了以下几点,希望深入理解核心:
WiFi工作模式设置跟网络请求无关,决定于ESP8266模块想以什么角色接入网络中。
如果ESP8266只是想静静地做个美男子,不想别人连接你,只是想一味地获取,那么你就果断设置成STA模式;
如果ESP8266想做个中央空调服务大众收集大众的需求,那么你就果断设置成soft-AP模式;
WiFi工作模式,博主理解为“物理结构”模式;
至于是client还是Server,取决于ESP8266开发需求;
如果业务要求是获取其他server提供的数据(发送请求,比如请求天气信息),那么你就可以使用Client模式;
如果业务要求是别人请求你获取某些数据(web请求),那么你可以使用Server模式;
client or server,取决于你的业务需求;
这一章节,我们讲讲解两大模块:
TCP client,对应 WiFiClient 库
TCP Server,对应 WiFiServer 库。
至于什么是TCP传输协议,大家执行查资料吧。
TCP是底层通讯协议,定义的是数据传输和连接方式的规范;
HTTP是应用层协议,定义的是传输数据的内容的规范;
HTTP协议中的数据是利用TCP协议传输的,所以支持HTTP也就一定支持TCP;
2. TCP client概念图:
client,又名客户端,也就是需要通过获取server提供的服务数据来展示自己。Tcp client,只是架构在tcp协议之上的客户端。上图中,ESP8266作为client端,通过路由,访问局域网内的Pc server或者广域网下的网络服务器信息,server收到请求后会处理请求并且把响应数据返回以供ESP8266使用。 3. WiFiClient库
博主总结了 WiFiClient 百度脑图:
整体上来说,方法可以分为4类:
第一类方法,连接操作;
第二类方法,发送请求操作;
第三类方法,响应操作;
第四类方法,普通设置;
3.1 连接操作 3.1.1 connect - 启动tcp连接函数说明:
/** * 建立一个tcp连接 * @param ip IPAddress of tcpserver * @param port port of tcpserver * @return result of tcp connect * 1 --- success * 0 --- fail */ int connect(IPAddress ip, uint16_t port); /** * 建立一个tcp连接 * @param host host of tcpserver (192.xx.xx.xx) * @param port port of tcpserver * @return result of tcp connect * 1 --- success * 0 --- fail */ int connect(const char *host, uint16_t port) /** * 建立一个tcp连接 * @param host host of tcpserver (192.xx.xx.xx) * @param port port of tcpserver * @return result of tcp connect * 1 --- success * 0 --- fail */ int connect(const String host, uint16_t port); 3.1.2 connected - 判断client是否还在连接函数说明:
/** * 判断tcp连接是否建立起来(ESTABLISHED) * @return result of tcp connect * 1 --- success * 0 --- fail */ uint8_t connected(); 3.1.3 stop - 停止tcp连接函数说明:
/** * 关闭tcp连接 */ void stop(); 3.1.4 status - 连接状态