Pour implémenter un simple protocole en python, j'ai utilisé un thread pour surveiller les accusés de réception envoyés par le destinataire. Pour ce faire, j'utilise un fil dans une fonctionTerminer un sockert.recv dans un thread en Python
def ackListener(self):
while self.waitingforack:
ack = self.socket_agent.recv(4)
...
exit()
où self.waitingforack
est un booléen je me mis à False
quand je l'ai reçu un accusé de réception pour tous les messages que je l'ai envoyé.
Le problème est que mon code bloque à l'opération self.socket_agent.recv(4)
, la modification de la valeur de waitingforack
est fait trop tard
Y at-il un moyen de forcer le thread de mettre fin quand je ne suis pas en attente de ack plus?
Merci
Merci, il semble que setblocking et settimeout peut me aider. Le problème est que je veux modifier la valeur de blocage ou de délai seulement au moment où j'ai envoyé tous les messages (ce qui est quand je suis déjà bloqué dans l'opération recv) ... –
@Martin Trigaux: Comme dit, si vous avez déjà appelé recv, vous serez bloqué. Vous devez soit définir sur non-blocage ou diminuer le délai de verrouillage et concevoir la solution autour de lui. – pyfunc