python 并发编程 多线程 多线程实现并发的套接字通信
进程内会生成一个主线程,让主线程执行server函数,server函数核心是accept(),让主线程干accept的工作, 建立连接,每建立一个连接应该执行通信函数
每建立一个连接就是生成一个子线程
服务端
from socket import * from threading import Thread def communicate(conn): ''' 通信功能 ''' while True: try: data = conn.recv(1024) if not data:break conn.send(data.upper()) except ConnectionResetError: break conn.close() def server(ip,port): ''' 负责建立连接 accept''' server = socket(AF_INET, SOCK_STREAM) server.bind((ip,port)) server.listen(5) while True: conn,addr = server.accept() t = Thread(target=communicate, args=(conn,),) t.start() server.close() if __name__ == "__main__": server('127.0.0.1', 8080)
客户端
from socket import * client = socket(AF_INET, SOCK_STREAM) client.connect(('127.0.0.1', 8080)) while True: msg = input(">>>:").strip() if not msg:break client.send(msg.encode("utf-8")) data = client.recv(1024) print(data.decode("utf-8")) client.close()
执行结果