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
}