SOCKET是一種基於TCP協議之下的通訊方式,請不要將SOCKET及WEBSOCKET搞混
有興趣的話可以參考下面的這篇
ESP32-Webserver(非同步)透過Websocket傳送JSON格式
原理的部分就不多說了,這邊直接說明範例
首先你需要先準備兩個ESP32,下面提供了兩片各自要燒的程式,都燒好之後如果你只有一台電腦,我強烈建議你另外再安裝一個序列副監控軟體
不然ESP或程式很容易死當
如果你程式都沒燒錯,會看到SERVER端會看到Hello from ESP32!
CLIENT端會看到SSS
SERVER端
#include <WiFi.h>
const char* ssid = "XXXXXX"; //輸入你的熱點
const char* password = "XXXXX"; //輸入你的熱點密碼
WiFiServer wifiServer(8080);
IPAddress local_IP(192,168,125,110);
IPAddress gateway(192,168,125,1);
IPAddress subnet(255,255,255,0);
void setup() {
Serial.begin(115200);
delay(1000);
WiFi.config(local_IP,gateway,subnet);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the WiFi network");
Serial.println(WiFi.localIP());
wifiServer.begin();
}
void loop() {
WiFiClient client = wifiServer.available();
String c;
if (client) {
while (client.connected()) {
while (client.available()>0) {
c = client.readString();
Serial.println(c);
client.println("SSS");
}
delay(1000);
}
}
}
CLIENT端
#include <WiFi.h>
const char* ssid = "XXXXX"; //輸入你的熱點
const char* password = "XXXXX"; //輸入你的熱點密碼
const uint16_t port = 8080;
const char * host = "192.168.125.110";
IPAddress local_IP(192,168,125,55);
IPAddress gateway(192,168,125,1);
IPAddress subnet(255,255,255,0);
void setup()
{
//Serial.setTimeout(50); //每筆字元讀取的間隔
Serial.begin(115200);
WiFi.config(local_IP,gateway,subnet);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("...");
}
Serial.print("WiFi connected with IP: ");
Serial.println(WiFi.localIP());
}
void loop()
{
WiFiClient client;
if (!client.connect(host, port)) {
Serial.println("Connection to host failed");
delay(800);
return;
}
else
//Serial.println("Connected to server successful!");
{
delay(1000);
client.println("Hello from ESP32!");
String c ;
delay(1000);
c = client.readString();
Serial.println(c);
}
}
以下為範例顯示結果
SERVER端:
CLIENT端: