2
모바일 장치가 액세스 할 수 있도록 내 esp8266을 액세스 지점으로 사용했습니다. 연결된 장치의 macAddress를 가져오고 싶습니다. 나는 어떻게 그것을 얻을 수 있 었는가?클라이언트의 Mac 주소를 esp8266에 연결하십시오.
모바일 장치가 액세스 할 수 있도록 내 esp8266을 액세스 지점으로 사용했습니다. 연결된 장치의 macAddress를 가져오고 싶습니다. 나는 어떻게 그것을 얻을 수 있 었는가?클라이언트의 Mac 주소를 esp8266에 연결하십시오.
나는 대답 from here
을 가지고 있으며 ARP를 통해보다
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
extern "C" {
#include<user_interface.h>
}
/* configuration wifi */
const char *ssid = "COblaster";
ESP8266WebServer server(80);
void handleRoot() {
server.send(200, "text/html", "<h1>You are connected</h1>");
String addy = server.client().remoteIP().toString();
Serial.println(addy);
}
void setup() {
delay(1000);
Serial.begin(115200);
Serial.println();
Serial.print("Configuring access point...");
WiFi.softAP(ssid);
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
server.on("/", handleRoot);
server.begin();
Serial.println("HTTP server started");
}
void loop() {
server.handleClient();
delay(5000);
client_status();
delay(4000);
}
void client_status() {
unsigned char number_client;
struct station_info *stat_info;
struct ip_addr *IPaddress;
IPAddress address;
int i=1;
number_client= wifi_softap_get_station_num();
stat_info = wifi_softap_get_station_info();
Serial.print(" Total connected_client are = ");
Serial.println(number_client);
while (stat_info != NULL) {
IPaddress = &stat_info->ip;
address = IPaddress->addr;
Serial.print("client= ");
Serial.print(i);
Serial.print(" ip adress is = ");
Serial.print((address));
Serial.print(" with mac adress is = ");
Serial.print(stat_info->bssid[0],HEX);
Serial.print(stat_info->bssid[1],HEX);
Serial.print(stat_info->bssid[2],HEX);
Serial.print(stat_info->bssid[3],HEX);
Serial.print(stat_info->bssid[4],HEX);
Serial.print(stat_info->bssid[5],HEX);
stat_info = STAILQ_NEXT(stat_info, next);
i++;
Serial.println();
}
delay(500);
}
그러나 액세스 포인트 (AP) 모드에서만 작동합니까? STA 모드에서이 작업을 수행하는 방법은 무엇입니까? – Codebeat
다른 작동? –
ARP를 사용하지 않았는데 어떻게 esp8266에서 액세스 할 수 있습니까? – ABI