为我的 ESP32 服务器分配静态 IP 后不再响应
After assigning static IP to my ESP32 server doesn't respond anymore
所以我让 ESP32 充当服务器,当调用 http://IP_OF_ESP32:7777/SOMETEXT 我的代码使我能够查看斜杠后写的文本,问题是在为我的 ESP32 分配静态 IP 后它没有不再工作了,这是我的代码
#include <WiFi.h>
const char* ssid = "Inovec1";
const char* password = "ccb255fd8f52";
WiFiServer server(7777);
IPAddress local_IP(192, 168, 121, 100);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 0, 0);
IPAddress primaryDNS(8, 8, 8, 8);
IPAddress secondaryDNS(8, 8, 4, 4);
void setup() {
Serial.begin(115200);
WiFi.config(local_IP,gateway,subnet,primaryDNS, secondaryDNS);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(WiFi.localIP());
server.begin();
}
void loop() {
WiFiClient client = server.available();
String message;
while(client.available()){
char c = client.read();
message += c;
}
String command = getCommand(message);
if(command.length()>0)
Serial.println(command);
}
String getCommand(String s){
String toFind1 = "GET /";
String toFind2 = " HTTP";
int start = s.indexOf(toFind1)+toFind1.length();
int end = s.indexOf(toFind2);
return s.substring(start,end);
}
因此,首先尝试为您的 ESP 提供一个在您 PC 地址范围内的 IP 地址。
IPAddress local_IP(192, 168, 0, 10);
如果可行(我假设没有其他设备具有该地址)
您的问题不是 firmware/program 而是您的路由。
(路由、子网等本身就是一个主题)
试试这个草图,IP 地址必须在同一个子网中。
#include <WiFi.h>
const char* ssid = "yourSSID";
const char* password = "yourPWD";
IPAddress local_IP(192, 168, 1, 139);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress primaryDNS(8, 8, 8, 8);
void setup()
{
Serial.begin(115200);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
if (!WiFi.config(local_IP, gateway, subnet, primaryDNS)) { //just one DNS and Configuration after connect
Serial.println("STA Failed to configure");
}
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
Serial.print("ESP Mac Address: ");
Serial.println(WiFi.macAddress());
Serial.print("Subnet Mask: ");
Serial.println(WiFi.subnetMask());
Serial.print("Gateway IP: ");
Serial.println(WiFi.gatewayIP());
Serial.print("DNS: ");
Serial.println(WiFi.dnsIP());
}
void loop()
{
}
所以我让 ESP32 充当服务器,当调用 http://IP_OF_ESP32:7777/SOMETEXT 我的代码使我能够查看斜杠后写的文本,问题是在为我的 ESP32 分配静态 IP 后它没有不再工作了,这是我的代码
#include <WiFi.h>
const char* ssid = "Inovec1";
const char* password = "ccb255fd8f52";
WiFiServer server(7777);
IPAddress local_IP(192, 168, 121, 100);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 0, 0);
IPAddress primaryDNS(8, 8, 8, 8);
IPAddress secondaryDNS(8, 8, 4, 4);
void setup() {
Serial.begin(115200);
WiFi.config(local_IP,gateway,subnet,primaryDNS, secondaryDNS);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(WiFi.localIP());
server.begin();
}
void loop() {
WiFiClient client = server.available();
String message;
while(client.available()){
char c = client.read();
message += c;
}
String command = getCommand(message);
if(command.length()>0)
Serial.println(command);
}
String getCommand(String s){
String toFind1 = "GET /";
String toFind2 = " HTTP";
int start = s.indexOf(toFind1)+toFind1.length();
int end = s.indexOf(toFind2);
return s.substring(start,end);
}
因此,首先尝试为您的 ESP 提供一个在您 PC 地址范围内的 IP 地址。
IPAddress local_IP(192, 168, 0, 10);
如果可行(我假设没有其他设备具有该地址) 您的问题不是 firmware/program 而是您的路由。 (路由、子网等本身就是一个主题)
试试这个草图,IP 地址必须在同一个子网中。
#include <WiFi.h>
const char* ssid = "yourSSID";
const char* password = "yourPWD";
IPAddress local_IP(192, 168, 1, 139);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress primaryDNS(8, 8, 8, 8);
void setup()
{
Serial.begin(115200);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
if (!WiFi.config(local_IP, gateway, subnet, primaryDNS)) { //just one DNS and Configuration after connect
Serial.println("STA Failed to configure");
}
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
Serial.print("ESP Mac Address: ");
Serial.println(WiFi.macAddress());
Serial.print("Subnet Mask: ");
Serial.println(WiFi.subnetMask());
Serial.print("Gateway IP: ");
Serial.println(WiFi.gatewayIP());
Serial.print("DNS: ");
Serial.println(WiFi.dnsIP());
}
void loop()
{
}