上手阿里云服务器(二)——监听TCP端口,ESP32与服务器的连接
python 语言编写监听 TCP 端口的代码,ESP32 与云服务器的连接,附完整客户端、服务器端代码
·
python 监听 TCP 端口(测试程序)
参考:Socket 网络编程
服务端程序
import socket
# 开启ip和端口
ip_port = ('127.0.0.1', 9999)
# 生成一个句柄
sk = socket.socket()
# 绑定ip端口
sk.bind(ip_port)
# 最多连接数
sk.listen(5)
# 开启死循环
while True:
print('server waiting...')
# 等待链接,阻塞,直到渠道链接 conn打开一个新的对象 专门给当前链接的客户端 addr是ip地址
conn, addr = sk.accept()
# 获取客户端请求数据
client_data = conn.recv(1024)
# 打印对方的数据
print(str(client_data, 'utf8'))
# 向对方发送数据
conn.sendall(bytes('Hello,client! I am server.', 'utf8'))
# 关闭链接
conn.close()
客户端程序
import socket
# 链接服务端ip和端口
ip_port = ('127.0.0.1', 9999)
# 生成一个句柄
sk = socket.socket()
# 请求连接服务端
sk.connect(ip_port)
# 发送数据
sk.sendall(bytes('Hello,server! I am client.', 'utf8'))
# 接受数据
server_reply = sk.recv(1024)
# 打印接受的数据
print(str(server_reply, 'utf8'))
# 关闭连接
sk.close()
以上两段代码可同时在本地运行,用来测试代码可行性,运行结果如下:
服务端打印 server waiting… 有客户连接后打印接收到的数据 Hello,server! I am client.
客户端连接后打印服务端发送过来的信息 Hello,client! I am server.
ESP32与云服务器的数据交互
云服务器端
- python 代码
与上面的服务端代码差不多,唯一的改动就是IP和端口那里改成自己服务器的内网IP和放行的端口 - python 脚本的上传与运行
- 打开云服务器的远程连接,文件 > 打开文件树
- 在 home/admin 或者其他位置新建一个 python 文件(这里我命名为了 server.py),把代码拷贝进去,保存
- 终端 sudo su root 然后cd到你的文件夹后 运行 python3 server.py
ESP32 端
#include <WiFi.h>
#include <WiFiClient.h>
#include <Wire.h>
// 这里添加要连的wifi名称和密码
const char* ssid = "";
const char* password = "";
// 这里添加要连的服务器IP和端口
const char* host = ""; // 这里是公网地址
const int port = ;
WiFiClient client;
void WiFiInit()
{
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("WIFI CONNECTED!");
}
void ClientSend(const char* SendData)
{
if(!client.connect(host, port))
{
Serial.println("Connection failed!");
}
else
{
client.print(SendData);
}
}
void setup() {
Serial.begin(115200);
WiFiInit();
}
void loop() {
ClientSend("Hello! I am client!");
delay(3000);
}
两端代码分别运行后,结果和测试程序效果类似。至此,就完成了设备与服务器的连接,后面再解决数据交互的问题。
更多推荐
所有评论(0)