GNU/Linux >> Tutoriels Linux >  >> Linux

Savoir si un message via tcp a été livré

Demander au destinataire de renvoyer un accusé de réception est la meilleure façon, même si cela "se sent maladroit". N'oubliez pas qu'IP peut diviser vos données en plusieurs paquets et les réassembler, et cela peut être fait plusieurs fois au cours d'une transmission si divers routeurs ont des MTU différents, et donc votre concept de "paquet" et TCP peuvent être en désaccord.

Il est bien préférable d'envoyer votre "paquet", qu'il s'agisse d'une chaîne, d'un objet sérialisé ou de données binaires, et de demander au destinataire de faire tout ce qu'il doit vérifier pour s'assurer qu'il est là, puis de renvoyer un accusé de réception.


Le TCP expéditeur sait quand les données sont reconnues par l'autre extrémité, mais la seule raison pour laquelle il le fait est qu'il sait quand il peut supprimer les données (parce que quelqu'un d'autre est maintenant responsable de les transmettre à l'application de l'autre côté ).

Il ne fournit généralement pas ces informations à l'application d'envoi, car (malgré les apparences) cela ne signifierait pas réellement signifier beaucoup à l'application d'envoi. L'accusé de réception ne signifie pas que l'application réceptrice a obtenu les données et en a fait quelque chose de sensé - tout cela signifie que le TCP expéditeur n'a plus à s'en soucier. Les données peuvent encore être en transit - dans un serveur proxy intermédiaire, par exemple, ou dans la pile TCP de réception.

"Données reçues avec succès" est vraiment un concept au niveau de l'application - ce que cela signifie varie en fonction de l'application (par exemple, pour de nombreuses applications, il serait logique de considérer les données "reçues" une fois qu'elles ont été synchronisées sur le disque sur le récepteur côté). Cela signifie donc que vous devez l'implémenter vous-même, car en tant que développeur d'application, vous êtes vraiment le seul en mesure de savoir comment le faire de manière sensée pour votre application.


Linux
  1. Linux – Récupération de données à partir d'un formatage accidentel sur une partition Ext4 ?

  2. Trouver quel processus a été tué par Linux OOM killer

  3. trouver des valeurs uniques dans un fichier de données

  4. Créer une connexion de port série virtuel sur TCP

  5. Programmation TCP Socket hautes performances en .NET C#

Trucs et astuces pour les administrateurs système et les opérations

Récupérer les données/partition perdues ?

Connaître les caractères pris en charge par une police donnée

Comment savoir quel fichier se trouve sur un secteur particulier

Lire des flux de données alternatifs sur SMB avec Linux

Manque de mémoire en exécutant fsck sur de grands systèmes de fichiers