标签:需要 bre base data import 客户 自己 odi end
socket只能处理一个client连接,如果需要并发处理多个链接则需要使用socketserver,下面是代码示例以及注释
server端
1 import socketserver 2 #之前的socket只能同时处理一个客户端,当需要并发处理client发送的信息是需要使用到socketserver,下面创建一个类,继承socketserver其对应实例就有并发能力 3 class My_Tcp_Handler(socketserver.BaseRequestHandler): 4 #下面的handler是自己定义的server与client交互的过程,所有交互过程都在此方法内部实现.方法名handle是固定的 5 def handle(self): 6 while True: 7 try: 8 #下面将收到的数据打印并且大写后发回给客户端 9 self.data = self.request.recv(1024) 10 print(self.data.decode(encoding="utf-8")) 11 self.send_data = self.data.decode(encoding="utf-8").upper().encode(encoding="utf-8") 12 self.request.sendall(self.send_data) 13 except ConnectionResetError as e: 14 print("一个客户端关闭了连接") 15 break 16 17 #实例化socketserver 18 My_server = socketserver.ThreadingTCPServer(("0.0.0.0", 8888), My_Tcp_Handler) #ThreadingTCPServer是使用多线程,ForkingTCPServer是使用多进程处理并发 19 #启动实例 20 My_server.serve_forever()
下面是client端
1 import socket 2 client = socket.socket() 3 client.connect(("127.0.0.1", 8888)) 4 while True: 5 msg = input() 6 if len(msg) == 0: 7 continue 8 client.send(msg.encode(encoding="utf-8")) #如果发送中文需要对其进行encode,接收也需要decode;英文前面直接加b指定类型 9 client_rec = client.recv(1024).decode(encoding="utf-8") 10 print("client_rec:", client_rec) 11 client.close()
标签:需要 bre base data import 客户 自己 odi end
原文地址:https://www.cnblogs.com/flags-blog/p/12369399.html