ESP8266开发之旅 网络篇⑦ TCP Server TCP Client

    通常,为了让手机连上一个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相关的 WiFiClientWiFiServer,跟https相关的 WiFiClientSecureWiFiServerSecure
    终于,到这篇,可以看到跟网络请求有关的东西了。
    那肯定就会有很多人会问:到底什么时候用到哪个呢?
    在这里,博主给大家概括了以下几点,希望深入理解核心:

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

概念图:

image


    client,又名客户端,也就是需要通过获取server提供的服务数据来展示自己。Tcp client,只是架构在tcp协议之上的客户端。上图中,ESP8266作为client端,通过路由,访问局域网内的Pc server或者广域网下的网络服务器信息,server收到请求后会处理请求并且把响应数据返回以供ESP8266使用。

3. WiFiClient库

    博主总结了 WiFiClient 百度脑图:

image


    整体上来说,方法可以分为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 - 连接状态

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzpgfx.html