[Arduino]ESP32 Socket 통신 / ESP32 Socket Communication(MacOS)

👉🏻 아래는 Esp32 와 nodejs소켓 통신에 대한 예제입니다.
Below is an example of Esp32 and Node.js socket communication.

👉🏻 Esp32설정은 기존과 동일합니다.
The Esp32 settings are the same as before.

👉🏻 Esp32에서 “sensor=42” 메세지를 서버로 보내고 서버는 “ACK:<Esp32에서 보낸 메세지>”형식을Esp32로 보냅니다.
Esp32 sends the “sensor=42” message to the server, and the server sends a message in the format “ACK:” to Esp32.

👉🏻 Esp32

#include <WiFi.h>

const char* ssid = "YOUR_ID";
const char* password = "YOUR_PASSWORD";

// 아이피 주소 /  Ipaddress
const char* host = "192.168.0.100";
const uint16_t port = 3000;

WiFiClient client;

void connectToServer() {
  Serial.print("Connecting to server...");
  if (client.connect(host, port)) {
    Serial.println("connected");
  } else {
    Serial.println("failed");
  }
}

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) { delay(500); }

  Serial.print("WiFi OK. IP: ");
  Serial.println(WiFi.localIP());

  connectToServer();
}

void loop() {
  // 끊겼으면 재연결 / If disconnected, reconnect
  if (!client.connected()) {
    client.stop();
    connectToServer();
    delay(1000);
    return;
  }

  // ESP32 → 서버로 메시지 보내기
  // ESP32 → Send message to server
  client.println("sensor=42");

  // 서버 → ESP32 응답 읽기
  // Read server → ESP32 response
  while (client.available()) {
    String line = client.readStringUntil('\n');
    Serial.print("Server: ");
    Serial.println(line);
  }

  delay(2000);
}
Screenshot

👉🏻 server.js

const net = require("net");

const server = net.createServer((socket) => {
  console.log("Client connected:", socket.remoteAddress, socket.remotePort);

  socket.on("data", (data) => {
    const msg = data.toString().trim();
    console.log("RX:", msg);

    // 받은 메시지에 대한 응답 / Response to a received message
    socket.write("ACK:" + msg + "\n");
  });

  socket.on("end", () => {
    console.log("Client disconnected");
  });

  socket.on("error", (err) => {
    console.error("Socket error:", err);
  });
});

server.listen(3000, "192.168.0.10", () => {
  console.log("TCP server listening on 192.168.0.100:3000");
});
Screenshot

Leave a Reply