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与云服务器的数据交互

参考:ESP32发送数据到云服务器MySQL并显示在网页中

云服务器端

  • 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);
}

两端代码分别运行后,结果和测试程序效果类似。至此,就完成了设备与服务器的连接,后面再解决数据交互的问题。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐