client_state = {'PC': 0,'TX2': 0} #PC和TX2的ip的对象 class MyTCPHandler(socketserver.BaseRequestHandler): def handle(self): while True: try: self.data = self.request.recv(4096).strip() receved_string=self.data.decode("utf-8") if client_state['TX2']!=0 and client_state['PC']!=0 and len(receved_string)!=0 and receved_string!='AT+PCstart' and receved_string!='AT+TX2start': client_state['TX2'].request.send('ok'.encode("utf-8")) client_state['PC'].request.send(client_state['TX2'].data)
if receved_string=='AT+PCstart': client_state['PC']=self print("PC connected") if client_state['TX2'] != 0 and client_state['PC'] != 0: #检测是否都连上了 client_state['TX2'].request.send('PCready'.encode("utf-8")) client_state['PC'].request.send('TX2ready'.encode("utf-8")) elif receved_string=='AT+TX2start': client_state['TX2']=self print("TX2 connected") if client_state['TX2'] != 0 and client_state['PC'] != 0: #检测是否都连上了 client_state['TX2'].request.send('PCready'.encode("utf-8")) client_state['PC'].request.send('TX2ready'.encode("utf-8")) except Exception as e: print("err:",e) try: client_state['TX2'].request.send('AT+disconnect'.encode("utf-8")) except Exception as e: print("TX2需要手动重连:",e) try: client_state['PC'].request.send('AT+disconnect'.encode("utf-8")) except Exception as e: print("PC需要手动重连:",e) client_state['PC']=0 client_state['TX2']=0 break if __name__ == "__main__": HOST, PORT = '172.16.0.4', 8080 #172.16.0.4 localhost server = socketserver.ThreadingTCPServer((HOST, PORT), MyTCPHandler) server.serve_forever()
2.客户端配置
PCclient.py:
c
import socket import time client = socket.socket()
def connect_server(): while True: try: client.connect(('106.13.47.79', 8080)) # 106.13.47.79 localhost break except Exception as e: time.sleep(1) print("服务器没开", e) client.send('AT+PCstart'.encode("utf-8")) print("等待TX2连接中...")
connect_server() data = client.recv(1024).strip() # 设置收多少字节 if data.decode("utf-8")=='TX2ready': print("开始接收...") while True: receved_string= client.recv(1024).decode("utf-8") #设置收多少字节 print("recv:",receved_string) if receved_string == 'AT+disconnect': client.send('AT+PCstart'.encode("utf-8")) print("等待TX2连接中...") data = client.recv(1024).strip() # 设置收多少字节 if data.decode("utf-8") == 'TX2ready': print("开始接收...")