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 :
La connexion se fait, j'ai un beau :
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()
(oui, j'ai utilisé le debugger)pydev debugger: starting (pid: 4108)
('Connected by', ('127.0.0.1', 59383))
message received Hello, world
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.
Partager