SOCKET是一種基於TCP協議之下的通訊方式,請不要將SOCKET及WEBSOCKET搞混

有興趣的話可以參考下面的這篇

ESP32-Webserver(非同步)透過Websocket傳送JSON格式

https://karta146831.pixnet.net/blog/post/335437088-esp32-webserver%28%e9%9d%9e%e5%90%8c%e6%ad%a5%29%e9%80%8f%e9%81%8ewebsocket%e5%82%b3%e9%80%81json%e6%a0%bc%e5%bc%8f

原理的部分就不多說了,這邊直接說明範例

首先你需要先準備兩個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端:

SERVER端

CLIENT端:

client端

arrow
arrow
    創作者介紹
    創作者 凶王 的頭像
    凶王

    凶王的部落

    凶王 發表在 痞客邦 留言(0) 人氣()