2009-12-28 5 views
0

J'ai 2 processus et ils envoient des messages UDP. Ils ne lisent pas les messages de manière immodérée et parfois, lorsqu'ils lisent les messages, ils peuvent lire une grande partie d'entre eux. J'ai vu que lorsque l'un des processus est en panne, l'autre reçoit toujours ces messages.terminaison de processus

Comment ça se fait? il est en panne.

Merci

Répondre

1

Vous continuez à recevoir des paquets après un processus se bloque parce que le système d'exploitation en mémoire tampon les paquets entrants. Voir par exemple cette discussion sur UDP Buffering. Lorsque vous travaillez avec des sockets UDP non connectées, il n'y a aucun moyen pour l'un ou l'autre des quais de savoir si l'autre pile s'est écrasée autre que d'envoyer des paquets aller-retour.

+0

OK. S'il s'agissait de TCP, le tampon existerait toujours? –

+1

Oui. Mais vous pouvez voir un comportement différent avec TCP puisque si votre pile se ferme/plante, le système enverra un paquet FIN ou RST indiquant que la connexion est fermée et après avoir consommé les données restantes dans le tampon, vous obtiendrez une erreur de lecture ou de lecture. . –