Python socket通信、http协议、虚拟串口通信编程

创建socket套接字连接,TCP协议

from socketserver import TCPServer, StreamRequestHandler, ThreadingTCPServer


class MyRequestHandler(StreamRequestHandler):
    # 当客户端连接成功服务器时,系统自动调用该类的handler函数进行数据交互
    # 如果handler该函数执行结束,意味着服务器主动断开与客户端的连接
    def handle(self) -> None:
        # client_address: 保存着客户端的ip地址
        print("+++++++++", self.client_address[0])
        while True:
            # self.request.recv(32):从客户端发送的请求中读取32字节的数据,返回bytes类型
            buf = self.request.recv(32).decode()
            if len(buf) == 0:
                break
            print("recv:", buf)
            # self.request.send():将数据发送到客户端
            self.request.send(buf.encode())  # 字节字符串


if __name__ == '__main__':
    # 创建TCP服务器
    # 参数1:指定服务器的IP和端口号; 参数2:指定服务器处理请求的类
    # server = TCPServer(("127.0.0.1", 9876), MyRequestHandler)
    server = ThreadingTCPServer(("127.0.0.1", 9876), MyRequestHandler)
    print("waiting client")
    # server_forever() : 让服务器永远阻塞等待客户端的连接
    server.serve_forever()
    print("--------------")

http协议

from http.server import HTTPServer, CGIHTTPRequestHandler


# 要定制属于自己的Http服务器,需要设计一个类继承于 CGIHTTPRequestHandler,重写处理方法
class MyRequestHandler(CGIHTTPRequestHandler):
    def handle(self) -> None:
        print("My:", self.request.recv(128).decode())


if __name__ == '__main__':
    # 创建http服务器对象
    http = HTTPServer(("127.0.0.1", 9099), CGIHTTPRequestHandler)
    # http = HTTPServer(("127.0.0.1", 9099), MyRequestHandler)
    http.serve_forever()

虚拟串口编程

from serial.tools import list_ports
from serial import Serial
# 获取当前系统中所有的端口号
ports = list_ports.comports()  # comports() 获取系统中的所有端口信息
print(ports)
l1 = []
for port in ports:
    print(list(port))  # list(port):将串口的列表信息转为端口信息
    print(list(port)[0])  # list(port)[0]:获取具体的端口号
    l1.append(list(port)[0])
# 设置串口,构造对象,参数有默认值,因此部分串口协议不需要填写
serial = Serial(port=l1[1], baudrate=115200)
while True:
    # read(n):读取串口的数据,没数据就阻塞,有数据必须满足n字节才会读取
    # readline():读取整行数据,要求 串口缓存中必须有‘\r\n’换行标志
    buf = serial.readline()
    print("recv:", buf.decode())

你可能感兴趣的:(Python与人工智能,python,http,开发语言)