Maison >développement back-end >Tutoriel Python >Exemple de code de coroutine implémentant une connexion TCP en python
Le contenu de cet article concerne les exemples de code de coroutines en python pour implémenter les connexions TCP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Dans la communication réseau, chaque connexion doit créer un nouveau thread (ou processus) à gérer, sinon un seul thread ne peut pas accepter les connexions d'autres clients pendant le traitement de la connexion. Nous essayons donc d'utiliser des coroutines pour implémenter la réponse du serveur à plusieurs clients.
L'architecture est la même que celle de la communication TCP unique, sauf que les coroutines sont utilisées pour implémenter plusieurs tâches en même temps.
#服务端 import socket from gevent import monkey import gevent monkey.patch_all() def handle_conn(seObj): while True: re_Data = seObj.recv(1024).decode('utf-8') if re_Data == 'quit': break print('client>>',re_Data) value = input("server>>") se_Data = seObj.send(value.encode('utf-8')) if se_Data == 'quit': break if __name__ == '__main__': server = socket.socket() server.bind(('192.168.1.227',9876)) print("服务已开启") server.listen(4) while True: seObj,add = server.accept() gevent.spawn(handle_conn,seObj) seObj.close() server.close()
import socket # 1. 创建客户端的socket对象 client = socket.socket() # 2. 连接服务端, 需要指定端口和IP client.connect(('192.168.1.227',9876)) while True: # 3. 给服务端发送数据 send_data = input("client:>") client.send(send_data.encode('utf-8')) if send_data == 'quit': break # 4. 获取服务端返回的消息 recv_data = client.recv(1024).decode('utf-8') if recv_data == 'quit': break print("server:>%s" %(recv_data)) # 5. 关闭socket连接 client.close()
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!