Bonjour,
Je suis en train de faire un serveur pour réceptionner des messages en mode socket.
Le serveur fonctionne bien mais j'ai un problème pour exécuter un fonction de traitement sur le message avant de retourner la réponse.
Dans le code suivant, comment puis je faire pour être sûr que j'ai reçu le message entier.
j'aimerai exécuter le self.request.sendall(...) à l'extérieur du while, mais ca bloque. Mon soft d'émission de messages attend le retour en vain.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class IDTMVT(SocketServer.BaseRequestHandler): def handle(self): message="" while True: donneesRecues = self.request.recv(8192) message+=donneesRecues if not donneesRecues : break self.request.sendall(reverseMessage(message)) self.request.close()
Si par contre je laisse self.request.sendall(...) dans le while, j'obtiens bien un retour dans mon soft d'émission de messages.
En l'état j'ai bien le retour, mais je peux avoir une succession de retour si par exemple le message dépasse les 8192 octets alors que je souhaite n'en faire qu'un et un seul, une fois le message entièrement reçu et traité.
Merci d'avance
Partager