Exemple de code de coroutine implémentant une connexion TCP en python

不言
Libérer: 2018-10-13 16:49:44
avant
2247 Les gens l'ont consulté

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()
Copier après la connexion
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()
Copier après la connexion

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!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal