Bonjour,
J'aimerai avoir de l'aide sur le code suivant.
Celui-ci fonctionne bien mais une seule fois... c'est embêtant pour un Thread.
J'ai identifié que le soucis vient du return du Thread readData.
Si je remplace l'expression return data par print(data), le serveur affichera la donnée reçue à chaque fois.
Par contre, si je laisse return ça fonctionne qu'une fois et je n'ai pas de message d'erreur ou autre...
J'ai passé un temps fou à essayer de comprendre mais là je suis sec...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 import socket from multiprocessing.pool import ThreadPool def readData(conn): while True: try: data = conn.recv(1024).decode("utf8") return data except Exception as e: print(F"Erreur : {e}") #------------------ host, port = ('192.168.1.101',2000) socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) socket.bind((host,port)) socket.listen(5) print('Serveur lancé...') while True: try: conn, address = socket.accept() print('Client connecté ', address) pool = ThreadPool(processes=1) async_result = pool.apply_async(readData, (conn,)) return_val = async_result.get() print(return_val) except Exception as e: print(F"Erreur : {e}")
Merci par avance de votre aide.
Partager