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...

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}")
J'ai passé un temps fou à essayer de comprendre mais là je suis sec...
Merci par avance de votre aide.