ESP8266,手机与电脑之间的TCP通讯
电脑端运行通讯猫调试助手,作为服务端:
电脑端
电脑的IP地址是: 192.168.2.232
手机与电脑之间的TCP通讯
手机端运行网络调试精灵,作为客户端:
手机端
如果从手机端点击"发送"按钮,则也会将"ghhh东方红广场"几个字发送到电脑上(服务端).
ESP8266作为客户端:
// 注意如果是本地设备作服务器,则要求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); //连接WiFiSerial.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博客
相关文章:

ESP8266,手机与电脑之间的TCP通讯
电脑端运行通讯猫调试助手,作为服务端: 电脑端 电脑的IP地址是: 192.168.2.232 手机与电脑之间的TCP通讯 手机端运行网络调试精灵,作为客户端: 手机端 如果从手机端点击"发送"按钮,则也会将"ghhh东方红广场"几个字发送到电脑上(服务端). ESP8266作为客户…...
vue的数据监听是如何实现的?
Vue的数据监听是通过数据劫持和发布订阅模式来实现的。 数据劫持:Vue通过使用Object.defineProperty()方法来劫持数据对象的属性,并使用getter和setter来监听属性的变化。当属性被修改时,setter方法会被调用,从而触发相应的监听函…...
埋点日志解决方案——Golang+Gin+Sarama VS Java+SpringCloudGateway+ReactorKafka
埋点日志解决方案——GolangGinSarama VS JavaSpringCloudGatewayReactorKafka 之前我就写过几篇OpenRestylua-kafka-client将埋点数据写入Kafka的文章,如下: Lua将Nginx请求数据写入Kafka——埋点日志解决方案 python定时任务执行shell脚本切割Nginx…...
LeetCode 541 反转字符串 II 简单
题目 - 点击直达 1. 541 反转字符串 II 简单1. 题目详情1. 原题链接2. 题目要求3. 基础框架 2. 解题思路1. 思路分析2. 时间复杂度3. 代码实现 1. 541 反转字符串 II 简单 1. 题目详情 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个…...

从入门到精通:深入了解CSS中的Grid网格布局技巧和应用!
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 ⭐ 专栏简介 📘 文章引言 一…...
Android Studio Giraffe 添加 maven { url “https://jitpack.io“ }报错
Android Studio Giraffe 添加 maven { url “https://jitpack.io” }报错 settings.gradle.kts:13:21: Unexpected tokens (use ; to separate expressions on the same line)解决方法 新版maven写法发生了改变: maven { url uri("https://jitpack.io"…...

Linux C/C++ 实现网络流量分析(性能工具)
网络流量分析的原理基于对数据包的捕获、解析和统计分析,通过对网络流量的细致观察和分析,帮助管理员了解和优化网络的性能、提高网络安全性,并快速排查和解决网络故障和问题。 Linux中的网络流量常见类型 在Linux中,网络流量可以…...
python门牌制作,统计某个数字出现的次数
题目: 小蓝要为一条街的住户制作门牌号。 这条街一共有 2022位住户,门牌号从 1 到 2022 编号。 小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、…...

轻量封装WebGPU渲染系统示例<7>-材质多pass(源码)
当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/version-1.01/src/voxgpu/sample/MultiMaterialPass.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据和渲染机制分离。 …...

0030Java程序设计-积分管理系统论文
文章目录 摘 要**目 录**系统实现系统功能需求3.2.1 管理员功能3.2.2 柜员功能 开发环境 摘 要 随着计算机和网络的不断革新,世界已经进入了前所未有的电子时代。作为实用性强、应用范围广泛的会员管理系统也正在被越来越多的各类企业用于消费管理领域。然…...

H5游戏源码分享-考眼力游戏猜猜金币在哪
H5游戏源码分享-考眼力游戏猜猜金币在哪 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><meta charset"UTF-8"><meta name"apple-mobile-web-app-capa…...

2023 年值得关注的国外网络安全初创公司
网络安全初创公司试图解决的问题往往有点超前于主流。他们可以比大多数老牌公司更快地填补空白或新兴需求。初创公司通常可以更快地创新,因为它们不受安装基础的限制。 当然,缺点是初创公司往往缺乏资源和成熟度。公司致力于初创公司的产品或平台是有风…...

搞定蓝牙-第六篇(HID
搞定蓝牙-第六篇(HID) ble与HIDHOGPGAPP与HID ESP32程序分析 ble与HID HOGP 我们发现,电脑连接了蓝牙键盘就可以直接使用了,不需要配置任何东西,那么,这两者是怎么通讯的呢。我们使用的电脑windows系统内…...

Open3D(C++) 最小二乘拟合平面(直接求解法)
目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。 一、算法原理 平面方程的一般表达式为: A x + B y + C...
lua移植及使用
编译环境:Ubuntu16.04 64位 交叉编译工具:arm-hisiv500-linux-gcc 文章目录 1. 项目背景2. lua开源版本选择3. 封装代码3.1 源码简介3.2 封装类3.2.1 头文件3.2.2 类的实现3.3.3 sample代码 1. 项目背景 使用lua脚本,读取key对应的值&#x…...

【鸿蒙软件开发】ArkTS基础组件之Select(下拉菜单)、Slider(滑动条)
文章目录 前言一、Select下拉菜单1.1 子组件1.2 接口参数 1.3 属性1.4 事件1.5 示例代码 二、Slider2.1 子组件2.2 接口参数:SliderStyle枚举说明 2.3 属性2.4 事件SliderChangeMode枚举说明 2.5 示例代码 总结 前言 Select组件:提供下拉选择菜单&#…...
linux ssh 免密登录
概述 在大数据测试环境搭建时,经常会用到 ssh 免密登录 ,方便机器之间分发文件,从一个机器上登录至其它机器也方便 如何配置 linux 的 ssh 免密登录? 非免密登录 端口是22 [rootKS8P-Test-K8S06 ~]# ssh KS8P-Test-K8S06端口非22 [roo…...

秒级启动的集成测试框架
本文介绍了一种秒级启动的集成测试框架,使用该框架可以方便的修改和完善测试用例,使得测试用例成为测试过程的产物。 背景 传统的单元测试,测试的范围往往非常有限,常常覆盖的是一些工具类、静态方法或者较为底层纯粹的类实现&…...
Redux 数据仓库
Redux 数据仓库 解决React 数据管理(状态管理) ,用于中大型,数据比较庞大,组件之间数据交互多的情况下使用。 作者:如果你不知道是否需要使用Redux,那么你就不需要它! 解决组件的数据通信。 …...

[毕设记录]@开题调研:一些产品
我感觉产品能代表落地的一些实际应用,会和研究的角度有些差别,但是需求和兴趣往往是从现实中来的,在上一篇blog里面看外国blog的时候顺着搜搜到了很多国外的智慧校园chatbot解决方案 文章目录 Comm100streebomodern campusUniBuddy Comm100 …...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...