ESP32开发-作为TCP服务端接收数据

​​ESP32 + ENC28J60 作为TCP服务端​​

(电脑通过 ​​网络调试助手​​ 连接ESP32,实现双向通信)


​​完整代码​​

复制代码
#include <SPI.h>
#include <EthernetENC.h>  // 或 UIPEthernet.h

// 网络配置
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // MAC地址
IPAddress ip(192, 168, 1, 100);      // ESP32静态IP
const int serverPort = 8080;         // 监听端口

EthernetServer server(serverPort);    // TCP服务器
EthernetClient client;                // 客户端对象

void setup() {
  Serial.begin(115200);
  delay(1000);

  // 初始化ENC28J60
  SPI.begin(18, 19, 23, 5);  // SCK=18, MISO=19, MOSI=23, CS=5
  Ethernet.begin(mac, ip);

  // 启动TCP服务器
  server.begin();
  
  Serial.println("TCP Server Started");
  Serial.print("ESP32 IP: ");
  Serial.println(Ethernet.localIP());
  Serial.println("Waiting for client...");
}

void loop() {
  // 检查是否有新客户端连接
  client = server.available();
  if (client) {
    Serial.println("\n[Client Connected]");
    
    // 持续处理客户端数据
    while (client.connected()) {
      // 接收数据并打印到串口
      if (client.available()) {
        char c = client.read();
        Serial.write(c);  // 打印收到的数据
      }

      // 示例:若收到"ping",回复"pong"
      if (Serial.available()) {
        String cmd = Serial.readStringUntil('\n');
        client.print("ESP32 Reply: " + cmd); // 发送到客户端
      }
    }
    
    client.stop();
    Serial.println("[Client Disconnected]");
  }
}

​​功能说明​​

  1. ​​作为TCP服务端​​:

    • 监听端口 8080,等待电脑连接。
    • 实时打印客户端(网络调试助手)发送的数据。
    • 可通过串口监视器输入内容,主动回复客户端。
  2. ​​通信流程​​:

    • 电脑连接ESP32的IP 192.168.1.100:8080。
    • 电脑发送任意数据 → ESP32串口显示。
    • ESP32串口输入内容 → 发送到电脑。

​​使用步骤​​

  1. ​​硬件接线​​:

    • ENC28J60与ESP32连接:

      复制代码
      SCK=18, MISO=19, MOSI=23, CS=5, VCC=3.3V, GND=GND
  2. ​​电脑端操作​​:

    • 打开网络调试助手,选择 ​TCP客户端模式​。
    • 连接ESP32的IP 192.168.1.100,端口 8080。
  3. ​​ESP32调试​​:

    • 上传代码后,打开串口监视器(波特率115200)。
    • 观察客户端连接状态和接收的数据。
相关推荐
青衫客3638 分钟前
从网卡到 Socket:再探 Linux 网络协议栈与 iptables 数据包处理流程
linux·网络·网络协议
水水不水啊39 分钟前
告别切换N个窗口调试:我用 Python + WebView 做了款现代化串口助手(含 TCP/UDP、波形、协议解析)
python·tcp/ip·udp
zxanz11 小时前
SSL 证书申请中,服务器验证跟 DNS 解析验证有什么区别?
服务器·网络协议·ssl
TechWayfarer10 小时前
精度极限的突破:AI与IPv6如何重塑高精度IP查询
人工智能·网络协议·tcp/ip·transformer
墨神谕17 小时前
RPC框架与HTTP REST的区别
网络协议·http·rpc
Tech探索者17 小时前
没有公网 IP、不会端口映射?用 Natfrp 轻松远程访问家中 NAS
网络协议·tcp/ip·智能路由器
HY小宝F17 小时前
树莓派智能摄像头系统 30 天重学计划之 Day 04 · HTTP / API:控制链入口 —— 学习总结
网络协议·学习·http
dog25018 小时前
带宽,时延,抖动的不可能三角
网络·tcp/ip
福大大架构师每日一题21 小时前
mediamtx v1.21.2发布:UDP、JWT、RTSP、RTMP、HLS、WebRTC全面修复,稳定性与安全性再提升
网络协议·udp·webrtc
曹小强wxx1 天前
Flutter 局域网设备发现:UDP 广播 + mDNS 双路合并,以及靠谱的在线判定与断线重连
物联网·网络协议·flutter