ESP8266,手机与电脑之间的TCP通讯

这篇具有很好参考价值的文章主要介绍了ESP8266,手机与电脑之间的TCP通讯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 电脑端运行通讯猫调试助手,作为服务端:

ESP8266,手机与电脑之间的TCP通讯,tcp/ip,网络协议,网络

电脑端

电脑的IP地址是: 192.168.2.232

手机与电脑之间的TCP通讯

手机端运行网络调试精灵,作为客户端:

ESP8266,手机与电脑之间的TCP通讯,tcp/ip,网络协议,网络

手机端

如果从手机端点击"发送"按钮,则也会将"ghhh东方红广场"几个字发送到电脑上(服务端).

ESP8266作为客户端:

ESP8266,手机与电脑之间的TCP通讯,tcp/ip,网络协议,网络

// 注意如果是本地设备作服务器,则要求TCP Sever 和 ESP8266 都连接到同一个路由器。

#include <ESP8266WiFi.h>
#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 <ESP8266WiFi.h>
#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<AP_NameString.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博客文章来源地址https://www.toymoban.com/news/detail-716593.html

到了这里,关于ESP8266,手机与电脑之间的TCP通讯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ESP8266 (12F)】Wi-Fi通信与TCP/IP协议栈(测试文章)

    测试文章: ESP8266是一款低成本的Wi-Fi芯片,它可以实现无线网络的连接和通信。本文将介绍ESP8266的Wi-Fi通信功能和TCP/IP协议栈的使用方法。 Wi-Fi是一种无线局域网技术,它可以让设备在一定范围内通过无线电波进行数据传输。Wi-Fi遵循IEEE 802.11标准,目前常见的有802.11b/g/n等协

    2024年02月10日
    浏览(53)
  • STM32f103增加ESP8266模块,通过Wifi用手机TCP服务端远程与STM32通信

    提示:esp8266开启透传模式,连上路由器Wifi(电脑热点),接入STM32串口引脚。另外手机TCP服务端是手机IP地址+串口号(大于8000滴) 最近对ESP8266模块进行小了解,知道只要对8266通过串口发送AT指令进行配置其工作模式,就能够通过手机调试APP创建什么TCP/UDP服务端/客户端和8266进行

    2024年02月16日
    浏览(56)
  • stm32---ESP8266的基础 AT 指令、基础 Wi-Fi 功能 AT 指令、TCP/IP 功能 AT 指令

    (常用基础AT指令)主要了解其中指令AT、AT+RST、ATE:   (1)当参数是ATE1时,显示: (2)当参数是ATE0时,显示:   说明: (1) Station 模式: 模块相当于一个客户端,可以链接到其他路由器发出的WIFI信号。 (2) SoftAP模式(软路由模式):模块本身相当于一个路由器,其他设备可

    2024年02月04日
    浏览(50)
  • Java与Modbus-TCP/IP网络通讯

    通过Java与Modbus-TCP/IP网络通讯实现举例5中的功能

    2024年02月10日
    浏览(50)
  • ESP8266_AP模式、TCP连接

    ESP8266设置成AP模式,笔记本连上此WLAN; 作为TCP服务器端,配置好本地端口8266,等待客户端建立TCP连接(并设置60s keep alive); 侦听到客户端发来的TCP连接建立请求,如果能够成功建立TCP连接,则进入等待数据的阶段; 收到TCP数据,向客户端发送响应; 如果60s之内没有收到

    2024年02月07日
    浏览(41)
  • 【史上最全面esp32教程】网络篇和tcp/ip的使用

    ESP32是一款集成Wi-Fi和蓝牙的开发板,它可以轻松地和其他设备进行网络和TCP/IP通信 提示:以下是本篇文章正文内容,下面案例可供参考 ESP32网络学习: 了解网络协议: 在了解ESP32的网络功能之前,需要了解一些基本的网络协议,例如TCP,IP,DNS和HTTP等。这可以帮助您更深入

    2024年02月04日
    浏览(80)
  • esp8266 TCP接入巴法云物联网云平台

    前言 巴法云物联网云平台,就如它的文档介绍的,是一个专注物体联网的神奇的设备云平台(cloud.bemfa.com),它有以下特征,轻量级,支持发布/订阅模式,提供遗嘱机制,支持TCP长连接,全平台兼容。本文,将介绍如何通过esp8266这个芯片连接到巴法云的TCP设备云。 (一)注册

    2024年02月04日
    浏览(48)
  • ESP8266 教程3 — 通过TCP组建局域网并通信

    目录 1、ESP8266 的 AP 模式 1.1、查询 ESP8266 的wifi应用模式 1.2、设置 ESP8266 模块的wifi信息 1.3、查询已经接入的设备 2、ESP8266 的Station 模式 2.1、设置ESP8266为station模式 2.2、ESP8266接入到wifi热点 2.3、ESP8266断开接入的热点 3、ESP8266 的 AP+STA 模式 4、理解 ESP8266 在局域网内的单连接通

    2024年03月22日
    浏览(53)
  • ESP8266 TCP ERROR CLOSED的部分解决办法汇总

    常见原因可参见其他博主的文章: ESP8266模块调试问题:AT+CIPSTART=“TCP“,“192.168.126.1“,8234 ERROR CLOSED  WiFi模块调试问题:AT+CIPSTART=\\\"TCP\\\",\\\"192.168.43.212\\\",8080 ERROR CLOSED Windows系统下防火墙开启下设置入站规则  当防火墙,同一热点/路由器的问题都解决了, ESP8266与电脑连接同一个

    2024年02月04日
    浏览(33)
  • 关于ESP8266的透传模式测试(一)——TCP Client透传模式

    一、前言 本次测试所使用的是正点原子的ATK-ESP8266 WIFI模块。直接使用官方提供的固件使用AT指令来配置模块并使用。 模块默认为AT指令状态,模拟波特率为115200(8bit数据位,1bit停止位)。 硬件连接 使用USB转TTL方式(电脑需要安装CH340驱动)连接ESP8266,接线图如下。 二、透

    2024年02月22日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包