为我的 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()
{

}