socket模块tcp通过多进程并发连接多个客户端
#server端
import socket from multiprocessing import Process def talk(conn): while True: msg = conn.recv(1024).decode('utf-8') ret = msg.upper().encode('utf-8') conn.send(ret) conn.close() if __name__ =='__main__': sk = socket.socket() sk.bind(('127.0.0.1',9001)) sk.listen() while True: conn,_ = sk.accept() Process(target=talk,args=(conn,)).start() sk.close()
#clent端
import time import socket sk = socket.socket() sk.connect(('127.0.0.1',9001)) while True: sk.send(b'hello') msg = sk.recv(1024).decode('utf-8') print(msg) time.sleep(0.5) sk.close()
通过开启子进程,异步不阻塞。
类下通过socketserver模块进行tcp多客户端通信:
#server端
import time import socketserver class Myserver(socketserver.BaseRequestHandler): def handle(self): conn = self.request while True: try: content = conn.recv(1024).decode('utf-8') conn.send(content.upper().encode('utf-8')) time.sleep(0.5) except ConnectionError: break server = socketserver.ThreadingTCPServer(('127.0.0.1',9001),Myserver) server.serve_forever()
client端同上.