借助本教程,我在ESP32上创建了一个简单的WebServer:
void setup() {
Serial.begin(115200);
// Connect to Wi-Fi network with SSID and password
WiFi.softAP(ssid, password);
IPAddress IP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(IP); //IP address of my ESP32
server.begin();
}
void loop(){
WiFiClient client = server.available(); // Listen for incoming clients
if (client) { // If a new client connects
Serial.println("New Client"); // print a message out in the serial port
//...
}
}
如何获得此连接客户端的ip addess?^^所以多数民众赞成在这里
String ipaddress = /*...*/;
函数remoteIP
将IP地址作为IPAddress对象返回。
IPAddress ip = client.remoteIP();
IPAddress实现了Printable,因此可以与println一起使用。
Serial.println(ip);
如果你坚持要求将IP作为字符串获取,则IP地址的ESP32核心版本具有toString方法。
String ipaddress = ip.toString();
没有将IPAddress对象打印到字符数组的功能。你可以使用我的StreamLib中的CStringBuilder类将IPAddress打印到字符数组。CStringBuilder允许使用Arduino Stream类函数填充字符数组。StreamLib库位于库管理器中。
如果你不想使用StreamLib库,则可以使用以下函数(可能不理想)将IPAddress格式化为字符数组。
void ip2str(const IPAddress& ip, char* s) {
itoa(ip[0], s, 10);
size_t l = strlen(s);
s[l] = '.';
itoa(ip[1], s + l + 1, 10);
l = strlen(s);
s[l] = '.';
itoa(ip[2], s + l + 1, 10);
l = strlen(s);
s[l] = '.';
itoa(ip[3], s + l + 1, 10);
}