Bonjour,

j'expérimente en python, sur l'envoi de donnée via TCP.
J'ai pris un code simple pour la réception de donnée :

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
# Echo server program
import socket
 
HOST = ''                 # Symbolic name meaning all available interfaces
PORT = 123                # Arbitrary non-privileged port
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print('Connected by', addr)
while True:
    data = conn.recv(1024)
    if not data: break
    conn.sendall(data)
    print('message received '+data)
conn.close()
La connexion se fait, j'ai un beau :
pydev debugger: starting (pid: 4108)
('Connected by', ('127.0.0.1', 59383))
message received Hello, world
(oui, j'ai utilisé le debugger)

Je constate à l'exécution (côté client) que j'ai l'erreur suivante :
error: [Errno 10054] Une connexion existante a dû être fermée par l’hôte distant

Donc en lançant le server en mode debug, je constate que le premier message est bien reçu et affiché, et qu'au tour de boucle suivant, le break s'applique (forcément, vu que je n'ai pas envoyé d'autre message). Je soupçonne que le problème vient de ce que je reprend un code utilisé pour récupérer 1 message quand je veux en envoyer plusieurs, périodiquement. De ce que j'ai compris de la doc, il faut que je configure la socket en mode bloquant via accept(), mais je n'ai pas compris comment faire.

Merci pour votre aide.