1.Esp8266 UDP使用(给服务器发送IP、MAC地址)
#include <WiFiUdp.h>
WiFiUDP _udp;
int _udpPort = 8266;
_udp.begin(_udpPort); //开启UDP服务
//开启UDP服务后 给服务器发送IP、MAC
void Button::_received() {
IPAddress localIP = WiFi.localIP();
byte mac[6];
WiFi.macAddress(mac);
String data = "{\"ip\": \"" + localIP.toString() + "\",\"mac\": \"";
for (int i = 0; i < 6; i++) {
data += String(mac[i], HEX);
if (i < 5) {
data += ":";
}
}
data += "\"}";
//发送IP、MAC给服务器
_udp.beginPacket(serverIP1,serverPort1);
_udp.print(data);
_udp.endPacket();
Serial.println("Data sent to server: " + data);
_massage();
}
2.ESP Esp8266 UDP使用(UDP接收到token,并发送token、sn、设备类型给服务器)
//UDP接收到token 并发送token sn 设备类型给服务器
void Button::_massage(){
Serial.print("0000000000000000000000000000000\n");
int packetSize = _udp.parsePacket();
if (packetSize) {
//读取接收到的数据包
int n = _udp.read(_packetBuffer, UDP_TX_PACKET_MAX_SIZE);
_packetBuffer[n] = 0;
Serial.println(_packetBuffer);
JsonDocument doc;
deserializeJson(doc, _packetBuffer);
//解析json数据
if (doc.containsKey("cmdType")) {
int cmd = doc["cmdType"];
switch(cmd){
case 0:
if(doc.containsKey("token")){
const char *token = doc["token"];
Serial.printf("Parsed token: %s\n", token);
Serial.print("Received token: ");
Serial.println(token);
_sendTokenAndDeviceInfo(token);
}
break;
}
}
Serial.print("99999999999999999999999999\n");
}
Serial.print("11111111111111111111111111111111\n");
}
void Button::_sendTokenAndDeviceInfo(const char* token){
JsonDocument doc;
char json[1024];
doc["cmdType"] = 2;
doc["token"] = token;
doc["SN"] = zonwey.getSN();
doc["deviceType"] = DEVICE_TYPE;
serializeJson(doc,json);// 将JSON对象序列化为字符串
_udp.beginPacket(serverIP1,serverPort1);
_udp.write(json);
_udp.endPacket();
Serial.print("2222222222222222222222222222\n");
}