esp笔记(5)esp8266 与 TCP Sever 建立通讯 |
您所在的位置:网站首页 › tcp连接无法建立 › esp笔记(5)esp8266 与 TCP Sever 建立通讯 |
本文开发环境: MCU型号:ESP8266IDE环境 : Arduino IDETCP 助手:网络调试助手本文内容: esp8266 与 TCP Server 的简单通讯示例 文章目录 简介TCP Server 的建立查看 PC 端 IP 地址配置网络调试助手 Esp8266 程序设计代码示例串口调试信息 调试:可能的错误及其解决原因连接 WiFi 失败连接到 TCP Server 失败Esp8266 收不到 PC 端发送的信息 附件 简介TCP Server 和 Client 基础知识 待补充 TCP Server 的建立本文主要实现了 esp8266 与 TCP Server 的通讯,所以首先需要建立一个TCP Server,测试的时候,可以在PC端使用网络调试助手来建立一个服务(下载方式见文末)。需要注意的是,这需要用到PC的IP。 查看 PC 端 IP 地址在命令符中输入ipconfig命令查看本机IP地址: 知道本机IP地址以后,就可以配置网路调试助手了。 主要是连接WiFi,注意连接的WiFi和PC段,即TCP Sever需要在同一个网络中,本文PC段(电脑笔记本)和 ESP8266 都连接到同一个路由器。以下是完整代码,可以直接完整的复制粘贴。 #include #define AP_SSID "602" //所用WiFi的名字 #define AP_PSW "602602602" //所用WiFi的密码 const uint16_t port = 8080; //Tcp 服务器的端口 const char * host = "192.168.0.4"; //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); } 串口调试信息
当我们的串口助手收到这个消息,表示WiFi连接失败了,通常重复几次后就会成功,如果不成功,则可能是WiFi名称和密码没有正确输入。 当我们收到这样的信息,表示我们连接到TCP Server失败了,可能的原因: 没有打开TCP服务器,所以PC端并不存在一个TCP 服务器:![]() ![]() 当我们点击了发送数据后,发现串口助手并没有打印我们发送的数据,说明我们并没正确读取到信息: 发送时机不对:由于程序是非堵塞方式读取,所以运行读取函数后,程序会继续运行,当后续的示例代码停止client,就会导致接收不到信息。数据不是以回车符(‘\n’)结尾的,由于我们读取了一行数据,并以回车符作为标记,所以没有回车符会导致数据不能被正常打印。注意发送的数据要带回车,由于按回车后数据直接发送了,所以可以在其他地方复制一段带换行符的数据,比如:I am TCP Server / 附件百度云下载:网络调试助手 提取码:nsxc |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |