1.准备好阿里云服务器和宝塔面板
2.安装frp服务端
3.测试(密码账号在详情里面)
4.配置客户端
#一、没有域名情况下
[common]
server_addr = #公网ip地址,vps
server_port = 7000 服务的bind_port
token = 12121212
[httpname]
type = tcp # 没有域名情况下使用 tcp
local_ip = 127.0.0.1
local_port = 8000 #本地服务端口
remote_port = 8080 # 远程访问端口,x.x.x.x:8080 x.x.x.x(vps等公网ip)#2、有域名配置
[httpname]
type = http
local_port = 80
local_ip = 127.0.0.1
custom_domains = www.demo1.com
[httpsname]
type = https
local_port = 443
local_ip = 127.0.0.1
custom_domains = www.demo2.com
5.打开终端
输入下面命令就可以
frpc.exe -c frpc.toml
6.成功
7.小程序
(1)ESP8266WIFI模块
#include <ESP8266WiFi.h>
#include <SoftwareSerial.h>// 1. WiFi 热点信息(连接你的手机热点或路由器)
const char* ssid = "HONOR 70"; // 替换为你的热点名称
const char* password = "12345600"; // 替换为你的热点密码// 2. 服务器信息(Python TCP 服务器的局域网IP)
const char* server_ip = "192.168.206.77"; // 替换为你电脑在该热点下的局域网IP,注意会变
const uint16_t server_port = 9000;WiFiClient client;void setup() {Serial.begin(115200); // 初始化串口(用于调试或连接 STM32)// 连接 WiFiWiFi.begin(ssid, password);Serial.print("连接WiFi中");while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println();Serial.print("WiFi已连接,IP地址: ");Serial.println(WiFi.localIP());// 连接 TCP 服务器Serial.print("连接服务器中");while (!client.connect(server_ip, server_port)) {delay(1000);Serial.print(".");}Serial.println();Serial.println("已连接服务器");
}void loop() {// 1. 检查 TCP 是否断开,如果断开就重连if (!client.connected()) {Serial.println("[ESP8266] TCP断开,尝试重新连接...");while (!client.connect(server_ip, server_port)) {Serial.print(".");delay(1000);}Serial.println();Serial.println("[ESP8266] 已重新连接服务器");}// 2. 正常接收消息if (client.available()) {String msg = client.readStringUntil('\n');Serial.println("[ESP8266] 收到: " + msg);// TODO: 转发给 STM32,如果你有这部分串口逻辑Serial.println("[ESP8266] 转发给 STM32");Serial.print(msg);Serial.print('\n');Serial.println("[ESP8266] 成功发送给 STM32");}delay(10); // 小延时避免占满 CPU
}