{"id":5097,"date":"2026-03-31T14:46:00","date_gmt":"2026-03-31T05:46:00","guid":{"rendered":"https:\/\/www.freelifemakers.org\/wordpress\/?p=5097"},"modified":"2026-03-31T15:07:28","modified_gmt":"2026-03-31T06:07:28","slug":"arduinoesp32-socket-comm-macos","status":"publish","type":"post","link":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/2026\/03\/31\/arduinoesp32-socket-comm-macos\/","title":{"rendered":"[Arduino]ESP32 Socket \ud1b5\uc2e0 \/ ESP32 Socket Communication(MacOS)"},"content":{"rendered":"\n<p>\ud83d\udc49\ud83c\udffb \uc544\ub798\ub294 Esp32 \uc640 nodejs\uc18c\ucf13 \ud1b5\uc2e0\uc5d0 \ub300\ud55c \uc608\uc81c\uc785\ub2c8\ub2e4.<br>Below is an example of Esp32 and Node.js socket communication.<\/p>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb Esp32\uc124\uc815\uc740 \uae30\uc874\uacfc \ub3d9\uc77c\ud569\ub2c8\ub2e4.<br>The Esp32 settings are the same as before.<\/p>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb Esp32\uc5d0\uc11c &#8220;sensor=42&#8221; \uba54\uc138\uc9c0\ub97c \uc11c\ubc84\ub85c \ubcf4\ub0b4\uace0 \uc11c\ubc84\ub294 &#8220;ACK:&lt;Esp32\uc5d0\uc11c \ubcf4\ub0b8 \uba54\uc138\uc9c0>&#8221;\ud615\uc2dd\uc744Esp32\ub85c \ubcf4\ub0c5\ub2c8\ub2e4.<br>Esp32 sends the &#8220;sensor=42&#8221; message to the server, and the server sends a message in the format &#8220;ACK:&#8221; to Esp32.<\/p>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb Esp32<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;WiFi.h&gt;\n\nconst char* ssid = \"YOUR_ID\";\nconst char* password = \"YOUR_PASSWORD\";\n\n\/\/ \uc544\uc774\ud53c \uc8fc\uc18c \/  Ipaddress\nconst char* host = \"192.168.0.100\";\nconst uint16_t port = 3000;\n\nWiFiClient client;\n\nvoid connectToServer() {\n  Serial.print(\"Connecting to server...\");\n  if (client.connect(host, port)) {\n    Serial.println(\"connected\");\n  } else {\n    Serial.println(\"failed\");\n  }\n}\n\nvoid setup() {\n  Serial.begin(115200);\n  WiFi.begin(ssid, password);\n  while (WiFi.status() != WL_CONNECTED) { delay(500); }\n\n  Serial.print(\"WiFi OK. IP: \");\n  Serial.println(WiFi.localIP());\n\n  connectToServer();\n}\n\nvoid loop() {\n  \/\/ \ub04a\uacbc\uc73c\uba74 \uc7ac\uc5f0\uacb0 \/ If disconnected, reconnect\n  if (!client.connected()) {\n    client.stop();\n    connectToServer();\n    delay(1000);\n    return;\n  }\n\n  \/\/ ESP32 \u2192 \uc11c\ubc84\ub85c \uba54\uc2dc\uc9c0 \ubcf4\ub0b4\uae30\n  \/\/ ESP32 \u2192 Send message to server\n  client.println(\"sensor=42\");\n\n  \/\/ \uc11c\ubc84 \u2192 ESP32 \uc751\ub2f5 \uc77d\uae30\n  \/\/ Read server \u2192 ESP32 response\n  while (client.available()) {\n    String line = client.readStringUntil('\\n');\n    Serial.print(\"Server: \");\n    Serial.println(line);\n  }\n\n  delay(2000);\n}\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"980\" height=\"596\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/03\/Esp32-jpg.jpg\" alt=\"\" class=\"wp-image-5098\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/03\/Esp32-jpg.jpg 980w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/03\/Esp32-jpg-300x182.jpg 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/03\/Esp32-jpg-768x467.jpg 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/03\/Esp32-jpg-400x243.jpg 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/03\/Esp32-jpg-800x487.jpg 800w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><figcaption class=\"wp-element-caption\">Screenshot<\/figcaption><\/figure>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb server.js<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const net = require(\"net\");\n\nconst server = net.createServer((socket) =&gt; {\n  console.log(\"Client connected:\", socket.remoteAddress, socket.remotePort);\n\n  socket.on(\"data\", (data) =&gt; {\n    const msg = data.toString().trim();\n    console.log(\"RX:\", msg);\n\n    \/\/ \ubc1b\uc740 \uba54\uc2dc\uc9c0\uc5d0 \ub300\ud55c \uc751\ub2f5 \/ Response to a received message\n    socket.write(\"ACK:\" + msg + \"\\n\");\n  });\n\n  socket.on(\"end\", () =&gt; {\n    console.log(\"Client disconnected\");\n  });\n\n  socket.on(\"error\", (err) =&gt; {\n    console.error(\"Socket error:\", err);\n  });\n});\n\nserver.listen(3000, \"192.168.0.10\", () =&gt; {\n  console.log(\"TCP server listening on 192.168.0.100:3000\");\n});\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"498\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/03\/nodejs-sersver-jpg-1024x498.jpg\" alt=\"\" class=\"wp-image-5099\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/03\/nodejs-sersver-jpg-1024x498.jpg 1024w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/03\/nodejs-sersver-jpg-300x146.jpg 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/03\/nodejs-sersver-jpg-768x373.jpg 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/03\/nodejs-sersver-jpg-400x194.jpg 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/03\/nodejs-sersver-jpg-800x389.jpg 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/03\/nodejs-sersver-jpg.jpg 1086w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Screenshot<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udc49\ud83c\udffb \uc544\ub798\ub294 Esp32 \uc640 nodejs\uc18c\ucf13 \ud1b5\uc2e0\uc5d0 \ub300\ud55c \uc608\uc81c\uc785\ub2c8\ub2e4.Below is an example of Esp32 and Node.js socket communication. \ud83d\udc49\ud83c\udffb Esp32\uc124\uc815\uc740 \uae30\uc874\uacfc \ub3d9\uc77c\ud569\ub2c8\ub2e4.The Esp32 settings are the same as before. \ud83d\udc49\ud83c\udffb Esp32\uc5d0\uc11c &#8220;sensor=42&#8221; \uba54\uc138\uc9c0\ub97c \uc11c\ubc84\ub85c \ubcf4\ub0b4\uace0 \uc11c\ubc84\ub294 &#8220;ACK:&lt;Esp32\uc5d0\uc11c \ubcf4\ub0b8 \uba54\uc138\uc9c0>&#8221;\ud615\uc2dd\uc744Esp32\ub85c \ubcf4\ub0c5\ub2c8\ub2e4.Esp32 sends the &#8220;sensor=42&#8221; message to the server, and the server sends a message in the format [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22,1],"tags":[],"class_list":["post-5097","post","type-post","status-publish","format-standard","hentry","category-arduino","category-uncategorized","missing-thumbnail"],"_links":{"self":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/5097","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=5097"}],"version-history":[{"count":3,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/5097\/revisions"}],"predecessor-version":[{"id":5103,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/5097\/revisions\/5103"}],"wp:attachment":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=5097"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=5097"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=5097"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}