ESP8266之WiFiClient库学习

1. 前言

​ WiFIClient库是ESP8266作为TCP客户端使用的库,现在它已经是ESP8266WiFi库的一部分了,本篇中博主会介绍WiFiClient库中相关函数

2. WiFiClient库

2.1 连接相关

2.1.1connect —— 建立TCP连接

  • int connect(IPAddress ip, uint16_t port)
    

    参数介绍:

    ip:TCP服务器端的ip地址

    port:TCP服务器端口

    返回值:1----连接成功

    ​ 0----连接失败

  • int connect(const char *host, uint16_t port)
    

    参数介绍:

    host:TCP服务器主机地址

    portport:TCP服务器端口

    返回值:1----连接成功

    ​ 0----连接失败

    代码示例:

    WiFiClient client; //建立WiFi客户端对象
    client.connect("www.baidu.com",80);//建立TCP连接
    
  • int connect(const String host, uint16_t port)
    

    参数介绍:

    host:TCP服务器主机ip地址

    portport:TCP服务器端口

    返回值:1----连接成功

    ​ 0----连接失败

2.1.2 connected —— client连接是否成功

uint8_t connected()

参数介绍

返回值:1----连接成功

​ 0----连接失败

2.1.3 stop —— 关闭连接

void stop()

2.1.4 status —— 连接状态

uint8_t status()

参数介绍:

返回值:CLOSED = 0 LISTEN = 1 SYN_SENT = 2 SYN_RCVD = 3

​ ESTABLISHED = 4 FIN_WAIT_1 = 5 FIN_WAIT_2 = 6 CLOSE_WAIT = 7

​ CLOSING = 8 LAST_ACK = 9 TIME_WAIT = 10

2.1.5 write —— 发送数据到服务器端

  • size_t write(uint8_t str)
    

    参数介绍:

    str:发送的单个字节

    size_t:成功写入发送缓冲区的字节数

  • size_t write(const char *str)
    

    参数介绍:

    str:需要发送字符串或者字符数组

    size_t:成功写入发送缓冲区的字节数

  • size_t write(const char *buffer, size_t size)
    

    参数介绍:

    **buffer **:要发送字符串或者字符数组

    size: 数据字节数

    size_t:成功写入发送缓冲区的字节数

  • size_t write(Stream& stream)
    

    参数介绍:

    stream: 数据流

    size_t: 成功写入发送缓冲区的字节数

2.1.6 print —— 发送数据到服务器端

  • size_t print(const __FlashStringHelper *ifsh)
    

    参数介绍:

    ifsh:需要发送的字符串,字符串存在flash中(PROGMEM)

    size_t:成功写入发送缓冲区的字节数

  • size_t print(const String &s)
    

    参数介绍:

    s: 需要发送的字符串,字符串存在内存中

    size_t :成功写入发送缓冲区的字节数

  • size_t print(const char[] str[])
    

    参数介绍:

    str: 需要发送的字符串,字符串存在内存中

    size_t :成功写入发送缓冲区的字节数

  • size_t print(char c)
    

    参数介绍:

    c: 需要发送的字符

    size_t :成功写入发送缓冲区的字节数

  • size_t print(unsigned char b, int = base);
    size_t print(int n, int = base);
    size_t print(unsigned int n, int = base);
    size_t print(long n, int = base);
    size_t print(long long n, int = base);
    size_t print(unsigned long n, int = base);
    size_t print(unsigned long long n, int = base);
    size_t print(double n, int = digits);
    

2.1.7 println —— 发送数据到服务器端

参考print

2.2 响应相关

2.2.1 available —— 返回接收缓存区可读取字节数

int available()

2.2.2 avdilableForWrite —— 返回发送缓存区剩余可写空间(单位:字节)

size_t availableForWrite()

2.2.3 read —— 读取接收缓冲区一个字节

int read();
  • 此函数读取完数据后,会把该数据从缓冲区清掉

2.2.4 read(buf, size) —— 读取接收缓存区size大小的字节数据

int read(uint8_t *buf, size_t size)

参数介绍:

buf: 数据存储到该buf

size: 读取大小

int: 成功读取的大小

  • 此函数读取完数据后,会把该数据从缓冲区清掉

2.2.5 peek —— 读取接收缓冲区一个字节

int peek()
  • 此函数读取完数据后,不会把该数据从缓冲区清掉,所以需要特别关注这一点

2.2.6 peekBytes(buf,size) —— 读取接收缓冲区size大小的字节数据

size_t peekBytes(uint8_t *buffer, size_t length);
size_t peekBytes(char *buffer, size_t length);

参数介绍:

buf: 数据存储到该buf

length: 读取大小

int: 成功读取的大小

  • 此函数读取完数据后,不会把该数据从缓冲区清掉,所以需要特别关注这一点

2.2.7 readStringUntil —— 读取响应数据直到某个字符串为止

String readStringUntil(char end)

参数介绍:

end:结束字符

2.2.8 find - 判断是否存在某个字符串

bool find(char *buffer)

参数介绍:

buffer:目标字符串

  • 此函数会把数据从缓冲区清掉

2.2.9 flush —— 清除接收缓冲区

void flush(void)
  • 新版本flush功能是等待缓冲区中的所有传出字符都已发送

3. 演示

#include <ESP8266WiFi.h>
 
#define AP_SSID "RenKaixuan-PC" //这里改成你的wifi名字
#define AP_PSW  "qwertyuiop"//这里改成你的wifi密码
 
const uint16_t port = 8234;
const char * host = "192.168.137.100"; // ip or dns
WiFiClient client;//创建一个tcp client连接
 
void setup() {
  //设置串口波特率,以便打印信息
  Serial.begin(115200);
  //延时5s 为了演示效果
  delay(5000);
  // 我不想别人连接我,只想做个站点
  WiFi.mode(WIFI_STA);
  WiFi.begin(AP_SSID, AP_PSW);
 
  Serial.print("\n Wait for WiFi... ");
  //等待wifi连接成功
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
 
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
 
  delay(500);
}
 
void loop() {
  
  Serial.print("connecting to ");
  Serial.println(host);
 
  if (!client.connect(host, port)) {
    Serial.println("connection failed");
    Serial.println("wait 5 sec...");
    delay(5000);
    return;
  }
 
  // 发送数据到Tcp server
  Serial.println("Send this data to server");
  client.println(String("Send this data to server"));
 
  //读取从server返回到响应数据
  String line = client.readStringUntil('\r');
  Serial.println(line);
 
  Serial.println("closing connection");
  client.stop();
 
  Serial.println("wait 5 sec...");
  delay(5000);
}

4. 参考博客

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

  • 21
    点赞
  • 155
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 您好!您可以在以下网站下载 esp8266wifi.h 文件: 1. 官方网站:您可以从 Espressif 官方网站下载 esp8266wifi.h 文件。您可以通过以下链接访问该网站:https://www.espressif.com/zh-hans/products/socs/esp8266/resources。 2. GitHub:您还可以在 GitHub 上下载 esp8266wifi.h 文件。您可以在以下链接中找到该文件:https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WiFi。 请注意,如果您使用的是 Arduino IDE,则无需手动下载 esp8266wifi.h 文件。该文件已包含在 Arduino IDE 中的 ESP8266WiFi 中。您只需要在代码中添加 #include <ESP8266WiFi.h> 即可使用该。 ### 回答2: ESP8266WiFi.h是一个重要的Arduino文件,它允许Arduino开发板与ESP8266 Wi-Fi模块进行通信。这个是非常重要的,因为在使用ESP8266模块时,它可以使Arduino开发板轻松地连接到网络,从而使得我们可以使用互联网来控制我们的项目。 下载ESP8266WiFi.h文件并不难。首先,在Arduino IDE上打开“工具”菜单,在“管理...”下面搜索“ESP8266WiFi”,然后选择最新版本并下载。也可以在互联网上找到ESP8266WiFi.h头文件,下载到电脑上,随后将其导入Arduino IDE即可。 在编写代码的时候,需要在代码中包含ESP8266WiFi.h头文件,这样就可以使用相关Wi-Fi连接的函数。在开始使用ESP8266WiFi.h之前,建议去ESP8266官方网站了解ESP8266相关的Wi-Fi函数和命令,比如wifi.begin()等函数的具体用法。 总之,ESP8266WiFi.h头文件是连接ESP8266模块和Wifi网络的重要文件,在完成项目前需要将其下载。同时,在学习ESP8266模块的过程中,还需要学习ESP8266 WiFi连接相关的知识,以实现自己的应用。 ### 回答3: ESP8266 WIFI 文件是一种非常实用的工具,可以方便地实现 ESP8266 模块与 Arduino 的通信和控制。该文件包含了一系列函数和变量,可以帮助我们轻松地连接到 WIFI 网络、向远程服务器发送请求、接收数据等等。 要下载 ESP8266 WIFI 文件,首先需要在 Arduino IDE 中打开“管理器”。在管理器中搜索“esp8266wifi”,就可以找到相应的文件。点击“安装”,Arduino IDE 就会自动下载并安装该文件。 如果想手动安装 ESP8266 WIFI 文件,也可以前往 GitHub 等开源社区,下载压缩包,解压缩后将文件夹重命名为“ESP8266WiFi”,然后将该文件夹放置于 Arduino IDE 路径(一般在“我的文档\Arduino\libraries”目录下)。 使用 ESP8266 WIFI 文件的时候,需要在 Arduino 代码中添加以下语句: ``` #include <ESP8266WiFi.h> ``` 这样就可以调用相应的函数和变量了。需要注意的是,在使用 ESP8266 WIFI 文件之前,需要先将 ESP8266 模块与 Arduino 连接好,并确保模块正常工作。连接方式和相关操作可以参考模块说明书或者相关教程。 总之,ESP8266 WIFI 文件是 Arduino 的重要扩展,可以大大方便我们的开发工作。掌握使用方法和下载技巧,可以让我们事半功倍,实现更多功能和创意。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值