Arduino ESP8266/ESP32 TCP/UDP通讯例程 
  🔧需要配合上位机软件:网络调试助手(http://www.cmsoft.cn/software.html) 
# ifdef  ESP32 # include  <WiFi.h> # else # include  <ESP8266WiFi.h> # endif # include  <WiFiClient.h> const  char *  ssid =  "########" ; 
const  char *  password =  "********" ; 
const  char *  serverIP =  "192.168.0.113" ; 
const  int  serverPort =  7777 ; 
WiFiClient client; 
void  setup ( )  { 
  Serial. begin ( 115200 ) ; 
  WiFi. begin ( ssid,  password) ; 
  while  ( WiFi. status ( )  !=  WL_CONNECTED)  { 
    delay ( 1000 ) ; 
    Serial. println ( "Connecting to WiFi..." ) ; 
  } 
  Serial. println ( "Connected to WiFi" ) ; 
  Serial. println ( "Connected" ) ; 
    Serial. print ( "IP Address:" ) ; 
    Serial. println ( WiFi. localIP ( ) ) ; 
  Serial. print ( "Connecting to server " ) ; 
  Serial. print ( serverIP) ; 
  Serial. print ( ":" ) ; 
  Serial. println ( serverPort) ; 
  if  ( client. connect ( serverIP,  serverPort) )  { 
    Serial. println ( "Connected to server" ) ; 
  }  else  { 
    Serial. println ( "Connection failed" ) ; 
  } 
} 
void  loop ( )  { 
  if  ( client. connected ( ) )  { 
    if  ( client. available ( ) )  
    { 
      String response =  client. readStringUntil ( '\n' ) ; 
      Serial. print ( "Server response: " ) ; 
      Serial. println ( response) ; 
    } 
  }  else  { 
    Serial. println ( "Connection lost" ) ; 
    client. connect ( serverIP,  serverPort) ; 
  } 
} 
     
/*
 * 在ESP8266/32上使用Arduino编程语言开发TCP服务端,可以使用Serial.println( ) 函数来发送调试信息到串口。在接收和发送调试信息的过程中,可以使用以下代码作为参考:
 * 首先连接到Wi-Fi网络,然后创建一个TCP服务器并开始监听连接。在主循环中,通过server.available( ) 检查是否有客户端连接,如果有则进入内部循环。在内部循环中,通过client.available( ) 检查是否有数据可读取,如果有,则读取并打印接收到的请求信息,并通过client.println( ) 发送响应。当客户端断开连接时,通过client.stop( ) 停止连接,并打印相应的调试信息。
可以通过串口监视器查看ESP8266/32发送和接收的调试信息。在Arduino IDE中,选择对应的串口和波特率,然后点击串口监视器按钮即可查看。
 * 
 */
const char* ssid =  "########" ; //填写wifi,名称
const char* password =  "********" ; //填写wifi,密码 
WiFiServer server( 7777 ) ; //服务端端口号
void setup ( )  { 
  Serial.begin( 115200 ) ; 
  delay( 1000 ) ; 
  WiFi.begin( ssid, password) ; 
  while  ( WiFi.status( )  !=  WL_CONNECTED)  { 
    delay( 1000 ) ; 
    Serial.println( "Connecting to WiFi..." ) ; 
  } 
  Serial.println( "Connected to WiFi" ) ; 
  Serial.println( "Connected" ) ; 
    Serial.print( "IP Address:" ) ; 
    Serial.println( WiFi.localIP( )) ; //打印本机IP地址
    
  server.begin( ) ; 
  Serial.println( "Server started" ) ; 
} 
void loop ( )  { 
  WiFiClient client =  server.available( ) ; 
  if  ( client)  { 
    Serial.println( "New client connected" ) ; 
    while  ( client.connected( ))  { 
      if  ( client.available( ))  { 
        String request =  client.readStringUntil( '\r' ) ; 
        Serial.print( "Received request: " ) ; 
        Serial.println( request) ; 
        client.println( "Hello from ESP Device" ) ; 
        Serial.println( "Response sent" ) ; 
      } 
    } 
    client.stop( ) ; 
    Serial.println( "Client disconnected" ) ; 
  } 
} 
      
 
# ifdef  ESP32 # include  <WiFi.h> # else # include  <ESP8266WiFi.h> # endif # include  <WiFiUdp.h> ; 
unsigned  int  localPort =  7777 ;  
const  char *  serverIP =  "192.168.0.113" ; 
char  packetBuffer[ UDP_TX_PACKET_MAX_SIZE] ;  
const  char *  ssid =  "########" ; 
const  char *  password =  "********" ; 
void  setup ( )  { 
   Serial. begin ( 115200 ) ; 
   
  WiFi. begin ( ssid,  password) ; 
  while  ( WiFi. status ( )  !=  WL_CONNECTED)  { 
    delay ( 1000 ) ; 
    Serial. println ( "Connecting to WiFi..." ) ; 
  } 
  Serial. println ( "Connected to WiFi" ) ; 
  Serial. println ( WiFi. localIP ( ) ) ; 
  udp. begin ( localPort) ; 
} 
void  loop ( )  { 
  
  int  packetSize =  udp. parsePacket ( ) ; 
  if  ( packetSize)  { 
    int  len =  udp. read ( packetBuffer,  UDP_TX_PACKET_MAX_SIZE) ; 
    if  ( len >  0 )  { 
      packetBuffer[ len]  =  0 ;  
      Serial. print ( "Received packet: " ) ; 
      Serial. println ( packetBuffer) ; 
    } 
  } 
  
  udp. beginPacket ( serverIP,  localPort) ; 
  udp. write ( "Hello from ESP Device" ) ; 
  udp. endPacket ( ) ; 
  delay ( 1000 ) ; 
}