0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样用ESP32创建一个Web服务器 并将其连接到Wi-Fi获取IP地址

454398 来源:工程师吴畏 2019-07-26 09:15 次阅读

入门

客户端与客户端之间的连接webserver是使用HTTP协议建立的。 HTTP协议如下所示:HTTP/1.1 200 OK r nContent-Type:text/html r n r n“。

”HTTP/1.1 200 OK“表示服务器已接受请求并已回复“200 OK”,这是状态代码,后跟“ r n”,这是HTTP协议的约束。

“Content-Type:text/html r n“表示响应内容类型为HTML格式,后跟” r n“

在HTTP协议结束时,网络服务器将返回显示”Hello world“的网页。

代码

#include

const char* wifi_name = “Tenda_31BC98”; //Your Wifi name

const char* wifi_pass = “barcelona”; //Your Wifi password

WiFiServer server(80); //Port 80

void setup()

{

Serial.begin(115200);

// Let‘s connect to wifi network

Serial.print(“Connecting to ”);

Serial.print(wifi_name);

WiFi.begin(wifi_name, wifi_pass); //Connecting to wifi network

while (WiFi.status() != WL_CONNECTED) { //Waiting for the responce of wifi network

delay(500);

Serial.print(“。”);

}

Serial.println(“”);

Serial.println(“Connection Successful”);

Serial.print(“IP address: ”);

Serial.println(WiFi.localIP()); //Getting the IP address at which our webserver will be created

Serial.println(“Put the above IP address into a browser search bar”);

server.begin(); //Starting the server

}

void loop()

{

WiFiClient client = server.available(); //Checking for incoming clients

if (client)

{

Serial.println(“new client”);

String currentLine = “”; //Storing the incoming data in the string

while (client.connected())

{

if (client.available()) //if there is some client data available

{

char c = client.read(); //read a byte

Serial.print(c);

if (c == ’ ‘) //check for newline character,

{

if (currentLine.length() == 0) //if line is blank it means its the end of the client HTTP request

{

client.print(“”);

client.print(“

Hello World

”);

break; //Going out of the while loop

}

else

{

currentLine = “”; //if you got a newline, then clear currentLine

}

}

else if (c != ’ ‘)

{

currentLine += c; //if you got anything else but a carriage return character,

}

}

}

}

delay(2000);

}

代码说明

首先,我们加入了Wi-Fi库,它将帮助我们创建网络服务器。然后我们存储了Wi-Fi名称和密码,以便我们可以连接到这个Wi-Fi网络。之后,我们定义了我们要将数据发送到的端口

const char* wifi_name = “Tenda_31BC98”; //Your Wifi name

const char* wifi_pass = “barcelona”; //Your Wifi password

WiFiServer server(80); //Port 80

在setu中p功能,我们使用上面提供的Wi-Fi信息ESP32连接到我们的Wi-Fi网络。如果与Wi-Fi网络的连接成功,则“连接成功”将显示在串行监视器上。否则,它将继续尝试,直到它将连接到Wi-Fi网络。

Serial.print(“Connecting to ”);

Serial.print(wifi_name);

WiFi.begin(wifi_name, wifi_pass); //Connecting to wifi network

while (WiFi.status() != WL_CONNECTED) { //Waiting for the responce of wifi network

delay(500);

Serial.print(“。”);

}

Serial.println(“”);

Serial.println(“Connection Successful”);

以下命令将获取IP地址,我们将在串行监视器上显示它。

Serial.println(WiFi.localIP());

然后我们启动了服务器,以便我们可以获取数据并将数据发送到浏览器。

server.begin( );

在循环函数中,我们检查了是否有客户端发送了http请求。如果有任何客户端请求可用,它将存储在字符中并显示在串行监视器上。在请求结束时,我们将发送HTML命令,它将在网页上打印“Hello world”。

WiFiClient client = server.available(); //Checking for incoming clients

if (client)

{

Serial.println(“new client”);

String currentLine = “”; //Storing the incoming data in the string

while (client.connected())

{

if (client.available()) //if there is some client data available

{

char c = client.read(); //read a byte

Serial.print(c);

if (c == ’ ‘) //check for newline character,

{

if (currentLine.length() == 0) //if line is blank it means it’s the end of the client HTTP request

{

client.print(“

”);

client.print(“

Hello World

”);

break; //Going out of the while loop

}

如何运行代码

使用您的Wi-Fi名称和密码更改代码中的Wi-Fi名称和密码。然后上传代码并打开串行监视器。串行监视器将显示IP地址,如下图所示。在浏览器中输入此IP地址。

输入IP地址后,网页将如下所示。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Web服务器
    +关注

    关注

    0

    文章

    137

    浏览量

    24361
  • ESP32
    +关注

    关注

    17

    文章

    953

    浏览量

    17032
收藏 人收藏

    评论

    相关推荐

    基于ESP32-C3FN4为核心自主研发的Wi-Fi+BT模块-RF-WM-ESP32B1

    WI-FI模组 - RF-WM-ESP32B1是基于ESP32-C3FN4为核心自主研发的Wi-Fi+BT模块,支持IEEE 802.11b/g/n (2.4 GHz
    的头像 发表于 11-07 09:45 134次阅读
    基于<b class='flag-5'>ESP32</b>-C3FN4为核心自主研发的<b class='flag-5'>Wi-Fi</b>+BT模块-RF-WM-<b class='flag-5'>ESP32</b>B1

    【AI技术支持】ESP32无线Wi-Fi常用调试API

    Wi-Fi常用调试API在使用esp32调试Wi-Fi功能时,由于场景和各种因素的影响,难免会遇到各种连接不上,Wi-Fi断连等问题。下面介
    的头像 发表于 10-26 08:00 193次阅读
    【AI技术支持】<b class='flag-5'>ESP32</b>无线<b class='flag-5'>Wi-Fi</b>常用调试API

    esp8266和esp32区别是什么

    以下是关于ESP8266和ESP32的主要区别: 处理和架构 : ESP8266 :使用T
    的头像 发表于 08-19 18:16 4041次阅读

    esp32什么软件编程

    ESP32款由乐鑫(Espressif)推出的低功耗、高性能的Wi-Fi和蓝牙双模微控制,广泛应用于物联网、智能家居、智能穿戴等领域。要对ES
    的头像 发表于 08-19 17:24 2617次阅读

    IR900 Wi-Fi联网的配置过程

    ”接口选择Wi-Fi接口: dot11radio1类型选择:动态地址( DHCP) 如果Wi-Fi路由没有开DHCP,请选择类型:静
    发表于 07-25 06:09

    ESP8266如何为应用程序选择正确的Wi-Fi模块吗?

    连接 4 站点 - 接入点/软AP同时具有站点模式(使主机能够在网络上充当站点) - Zeroconf DNS服务发现 - 次打开4T
    发表于 07-19 16:56

    如何将多个ESP连接到ESP并向服务器发送数据?

    。 该站模式 ESP 连接了传感。所有这些站模式 esp 收集传感数据并将数据发送到主
    发表于 07-19 06:49

    AT 0.60.0.0看不到我的Wi-Fi网络,为什么?

    Wi-Fi 网络并连接到它。当然,我的路由AP SSID已启用,我可以在其他设备上看到此网络。这不是什么大问题,但我认为它仍然是错误
    发表于 07-18 08:31

    为什么ESP8266没有检测到Wi-Fi的SSID?

    你好,我的ESP8266没有检测到我家Wi-Fi的SSID。我尝试打开我的 iPhone 热点,我可以正常查看和连接(我也成功连接到 MQTT)。相反,没有办法看到我家的
    发表于 07-09 06:44

    ESP826如何运行AP TCP服务器

    应该从平板电脑客户端获取命令进行进步处理。不涉及额外的路由。 现在,AP工作正常,平板电脑可以登录WLAN并获得正确的IP地址。但是客户
    发表于 07-09 06:27

    使用的是esp32官方的Wi-Fi例程,一直连接不上Wi-Fi怎么解决?

    使用的是esp32官方的Wi-Fi例程 一直连接不上Wi-Fi 日志: ESP-ROM:esp8
    发表于 07-02 07:21

    ESP32-S2如何找到send函数的底层接口函数?

    你好,我正在用ESP32-S2做一个项目,当有Wi-Fi时,通过Wi-Fi连接服务器;当没
    发表于 06-28 08:18

    请问ESP32-AT支持Wi-Fi漫游指令吗?

    请问 ESP32-AT 支持 Wi-Fi 漫游指令吗?我这边在 ESP-IDF 下面看到有 roaming 的示例,但是在 esp-at 中没有找到相关指令。
    发表于 06-27 07:13

    使用ESP32-C3的SoftAP模式创建Wi-Fi热点,ESP32-C3不输出任何日志,并且无法响应,为什么?

    问题描述: 我正在使用ESP32-C3的SoftAP模式创建Wi-Fi热点,并使用手机连接到该热点。当手机连接成功并熄屏
    发表于 06-07 08:26

    Wi-Fi HaLow和传统Wi-Fi的区别

    Wi-Fi HaLow和传统Wi-Fi的区别  Wi-Fi种无线网络技术,可以连接到互联网或局域网,为用户提供无线上网的便利。随着科技的
    的头像 发表于 02-02 15:28 1077次阅读