电脑端运行通讯猫调试助手,作为服务端:
电脑端
电脑的IP地址是: 192.168.2.232
手机与电脑之间的TCP通讯
手机端运行网络调试精灵,作为客户端:
手机端
如果从手机端点击"发送"按钮,则也会将"ghhh东方红广场"几个字发送到电脑上(服务端).
ESP8266作为客户端:
// 注意如果是本地设备作服务器,则要求TCP Sever 和 ESP8266 都连接到同一个路由器。
- #include
- #define AP_SSID "trdjtxxx" //所用WiFi的名字
- #define AP_PSW "xh36xxxx" //所用WiFi的密码
-
- const uint16_t port = 10002; //Tcp 服务器的端口
- const char * host = "120.76.100.197"; //Tcp 服务器的ip地址
-
- WiFiClient client; //创建一个tcp client连接
-
- void setup() {
- Serial.begin(115200);
- delay(5000);
-
- WiFi.mode(WIFI_STA); //设置WiFi 为 Station 模式
- WiFi.begin(AP_SSID,AP_PSW); //连接WiFi
-
- Serial.println("Connecting to WiFi... ");
- //等待wifi连接成功
- while (WiFi.status() != WL_CONNECTED) {
- Serial.println("Failed!");
- delay(500);
- }
-
- Serial.println("");
- Serial.println("Connected");
- Serial.println("Local IP: ");
- Serial.println(WiFi.localIP());
-
- delay(500);
- }
-
- void loop() {
- Serial.println("Connecting to TCP Server :");
- Serial.println(host);
- if (!client.connect(host, port)) {
- Serial.println("Failed");
- Serial.println("Reconnect in 5 seconds");
- delay(5000);
- return;
- }
-
- // 发送数据到 Tcp Server
- Serial.println("Send The String to TCP Server :\"I am Esp8266\"");
- client.println(String("I am Esp8266"));
-
- //读取从 Tcp Server 返回的数据(以回车符结尾)
- String line = client.readStringUntil('\n');
- Serial.println(line);
-
- //3s 后关闭连接
- delay(3000);
- Serial.println("");
- client.stop();
-
- //等待5s,程序循环运行,即5s后从新开始连接
- Serial.println("wait 5 sec...");
- delay(5000);
- }
120.76.100.197 即:webtcp.tongxinmao.com的IP地址.
ESP8266作为TCP服务器:
// ESP8266 TCP服务端程序,同时也作为一个WIFI AP
// 注意作为客户端的电脑或手机必须先通过WIFI连接到此ESP8200上
// 即和 ESP8266 都连接到同一个网络中。
Arduino 程序代码:
- #include
- #define MAX_SRV_CLIENTS 3 //最大同时连接数,即可接入的设备数量的最大值,
- //8266 tcpserver只能接入5个(此数据不确定,网上是这么说的)
-
- WiFiServer server(8266); //端口号,范围 0-65535
- WiFiClient serverClients[MAX_SRV_CLIENTS];
-
- const char WiFiAPPSW[] = "xh36xxxx"; //设置AP模式下模块所发出的WIFI的密码
- char data[1500];
- int ind = 0;
-
- void setupWiFi()
- {
- WiFi.mode(WIFI_AP);
- uint8_t mac[WL_MAC_ADDR_LENGTH];
- WiFi.softAPmacAddress(mac);
-
- String macID = String(mac[WL_MAC_ADDR_LENGTH - 3], HEX) +
- String(mac[WL_MAC_ADDR_LENGTH - 2], HEX) +
- String(mac[WL_MAC_ADDR_LENGTH - 1], HEX);
- macID.toUpperCase();
-
- //设置AP模式下的WIFI名称:12345678_ + MAC地址后六位
- String AP_NameString = "12345678" + macID;
-
- char AP_NameChar[AP_NameString.length() + 1];
- memset(AP_NameChar, AP_NameString.length() + 1, 0);
-
- for (int i=0; i
length(); i++) - AP_NameChar[i] = AP_NameString.charAt(i);
-
- WiFi.softAP(AP_NameChar, WiFiAPPSW);
-
- Serial.println();
- Serial.print ( "IP address: " );
- Serial.println ( WiFi.softAPIP() );
-
- server.begin();
-
- }
- void setup()
- {
- Serial.begin(115200);
- Serial.println ("\nBegin now!!!");
- setupWiFi();
- }
-
- void loop()
- {
- uint8_t i;
- //检测服务器端是否有活动的客户端连接
- if (server.hasClient())
- {
- for (i = 0; i < MAX_SRV_CLIENTS; i++)
- //查找空闲或者断开连接的客户端,并置为可用
- {
- if (!serverClients[i] || !serverClients[i].connected())
- {
- if (serverClients[i]) serverClients[i].stop(); //未连接,就释放
- serverClients[i] = server.available(); //分配新的
- // Serial.print("New client: "); Serial.println(i);
- continue;
- }
- }
- //若没有可用客户端,则停止连接
- WiFiClient serverClient = server.available();
- serverClient.stop();
- }
- //检查客户端的数据
- for (i = 0; i < MAX_SRV_CLIENTS; i++)
- {
- if (serverClients[i] && serverClients[i].connected())
- {
- if (serverClients[i].available())
- {
- Serial.println("Connected to client !!! ");
- //从Telnet客户端获取数据
- while (serverClients[i].available()) {
- data[ind] = serverClients[i].read(); //读取client端发送的字符
- ind++;
-
- }
- for(int j=0;j < ind; j++)
- {
- Serial.print(data[j]);
- }
- Serial.println();
- ind = 0;
- serverClients[i].print("OK! Got your request."); //在client端回复
- }
- }
- }
- }
参考:
esp笔记(5)esp8266 与 TCP Sever 建立通讯_esp8266tcp server程序-CSDN博客
【ESP8266】ESP8266作为TCPServer与其他设备建立一个TCP网络进行局域网通讯_多个esp8266如何组网-CSDN博客