WIFI TCP协议通信 TCP客户端示例

本帖主要讲解ESP8266 WIFI功能关于TCP协议网络传输的应用,这里演示了ESP8266作为TCP客户端的示例:

一、软件和硬件

硬件我们本次使用零知-ESP8266;

二、方法步骤

(1)先在零知开发工具中复制下面的代码到零知开发工具中:


							
	/**********************************************************
	*    文件: tcp-client.ino      by 零知实验室([url]www.lingzhilab.com[/url])
	*    -^^- 零知开源,让电子制作变得更简单! -^^-
	*    时间: 2019/06/17 12:32
	*    说明:
	************************************************************/
	 
	#include <ESP8266WiFi.h>
	 
	#define SSID "xx" //这里改成你的wifi名字
	#define PASSWD  "xx"//这里改成你的wifi密码
	 
	const uint16_t port = 8888;
	const char * host = "192.168.0.111"; // ip or dns
	WiFiClient client;//创建一个tcp client连接
	 
	// 复位或上电后运行一次:
	void setup() {
	    //在这里加入初始化相关代码,只运行一次:
	    Serial.begin(115200);
	     
	    WiFi.mode(WIFI_STA);
	    WiFi.begin(SSID,PASSWD);
	     
	    Serial.println("Wait for WiFi... ");
	    //等待wifi连接成功
	    while (WiFi.status() != WL_CONNECTED) {
	        Serial.print(".");
	        delay(500);
	    }
	     
	    Serial.println("");
	    Serial.println("WiFi connected");
	    Serial.print("IP address: ");
	    Serial.println(WiFi.localIP());
	     
	    delay(500);
	}
	 
	//一直循环执行:
	void loop() {
	    // 在这里加入主要程序代码,重复执行:
	    Serial.print("connecting to ");
	    Serial.println(host);
	     
	    if (!client.connect(host, port)) {
	        Serial.println("connection failed");
	        Serial.println("wait 5 sec...");
	        delay(5000);
	        return;
	    }
	     
	    // 发送数据到Tcp server
	    Serial.println("Send this data to server");
	    client.println(String("lingzhilab"));
	     
	    //读取从server返回到响应数据
	    String line = client.readStringUntil('\r');
	    Serial.println(line);
	     
	    Serial.println("closing connection");
	    client.stop();
	     
	    Serial.println("wait 5 sec...");
	    delay(5000);
	}
							
						

注:上述代码中需要填写自己的Wifi热点ssid和密码以及电脑所在局域网分配的IP地址(在零知工具箱-网络调试界面可以选择IP,这两处是一致的)。

首先打开零知工具箱的网络调试窗口,然后选择TCP服务端,并选择IP和端口:

然后点击【连接】,这样就在电脑端开启了一个TCP服务器,然后就可以和ESP8266进行通信了: