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

    浏览量

    24227
  • ESP32
    +关注

    关注

    13

    文章

    896

    浏览量

    15804
收藏 人收藏

    评论

    相关推荐

    ESP32-C2开发板 介绍

    2、支持网状网络(最多250台设备) 线程缺点 1、需要线程边界路由来运行切,仍然需要Wi-Fi
    发表于 06-06 15:02

    ESP无法连接到路由上的Wi-Fi要怎么处理?

    你好。我对 esp8266 NodeMcu v3 有疑问。我在 Blynk 应用程序中连接了带有温度预览的 ds18b20 传感ESP 无法连接
    发表于 06-06 13:07

    如何将ESP32作为从两ESP8266 ESP-01客户端读取的服务器运行?

    我正在慢慢学习 ESP8266 ESP-01 和 ESP32 网络的来龙去脉。我正在尝试将 ESP32 作为从两
    发表于 06-06 11:58

    连接到ThingWorx本地服务器的NodeMCU不断收到错误信息是为什么?

    当我尝试将我的电路板连接到 thingworx 服务器时,我不断收到错误消息:连接失败。 ([httpGetPropertry] 失败,错误:连接失败) 当我将
    发表于 06-06 08:15

    ESP无法连接到我路由上的Wi-Fi是什么原因造成的?怎么处理?

    你好。我对 esp8266 NodeMcu v3 有疑问。我在 Blynk 应用程序中连接了带有温度预览的 ds18b20 传感ESP 无法连接
    发表于 06-01 09:54

    如何将ESP-12F仅作为Wi-Fi模块进行无线传输?

    你好!我正在设计基于 Raspberry RP2040 处理ESP-12F 的 PCB 板,用于通过 Wi-Fi 提供物联网
    发表于 06-01 08:59

    ESP32-C2开发板系列

    2、支持网状网络(最多250台设备) 线程缺点 1、需要线程边界路由来运行切,仍然需要Wi-Fi
    发表于 05-30 13:43

    求分享将ESP12F连接到具有SIM 800的SIP服务器的指南

    大家好,我正在开发 IVRS,计划使用 SIM800 GSM 模块作为呼叫网关,该网关将通过 ESP12-f 进连接到 SIP
    发表于 05-19 12:32

    如何同时在AP和station模式下运行ESP8266?

    我的要求是使用 ESP8266 从网站上获取数据。这个 ESP8266 必须在不同的物理位置上工作。每个位置将有不同的 WI-FI SSID 和用于
    发表于 05-15 08:37

    esp8266设置为服务器时,如何从不同的接入点连接到服务器

    嘿,我想问 <> 问题。当我将 esp8266 设置为服务器时,如何从不同的接入点连接到
    发表于 05-15 08:13

    ESP32-C2开发板简介

    网络(最多250台设备) 线程缺点 需要线程边界路由来运行切,仍然需要Wi-Fi连接(或
    发表于 05-11 15:04

    ESP8266如何将其用作微型网络服务器

    创建公共网站,我将其托管在 ESP8266 上,以演示如何将其用作微型网络
    发表于 05-11 08:19

    ESP Basic的IP地址在哪里找?

    连接IP 地址。我打开了终端,但我看到的只是乱码。 也许“乱码”是 74880 波特率的启动消息,提供有关为什么您的草图无法正常工
    发表于 05-10 07:13

    有没有办法只绑定TCP/UDP服务器实例到AP IP地址,让STA仍然可以正常与云端通信?

    ,客户端连接和发送数据没有任何问题。 有没有办法只绑定TCP/UDP服务器实例到AP IP地址
    发表于 05-08 07:56

    如何在没有Wi-Fi的情况下将esp8266连接到互联网的gsm模块?

    我正在寻找能够在没有 Wi-Fi 的情况下将 esp8266 连接到互联网的 gsm 模块。有什么建议么?
    发表于 04-26 06:50