J'ai une connexion TCP ouverte, et la lecture en utilisant NetworkStream.BeginRead(). Une fois que la connexion est fermée à chaque extrémité, le callback est appelé et l'objet stream est inutile - comme la documentation dit, EndRead() lance IOException ou ObjectDisposedException en fonction de la fin de la connexion..NET NetworkStream fermé, comment être sûr que toutes les données sont lues?
Est-il garanti qu'il n'y a pas de données qui me manquent juste entre la dernière EndRead réussie (et la re-BegingRead) et la déconnexion, en particulier si je le fais à mon extrémité? Si ce n'est pas le cas, au cas où je ferais la fermeture de la connexion, dois-je manuellement NetworkStream.Read() lors de la déconnexion pour m'assurer que rien n'est laissé non lu?
Woo-hoo! Je connais des choses qui sont correctes mais que personne d'autre ne connaît assez pour confirmer ou infirmer! Euh, attendez une minute, pourquoi suis-je heureux à ce sujet? – Task
Je vais ressusciter ceci dans l'espoir que l'on répondra à cette question (très proche): Comment 'EndRead' peut-il produire 0 octets lus, si le seul moyen' EndRead' est appelé est dans le rappel de 'BeginRead', les données doivent être transmises pour être exécutées? Devrais-je simplement envoyer une réponse zéro octet? – Brandon
Eh bien, maintenant vous parlez de * écrire * dans le flux au lieu d'en lire. C'est un peu différent. Avez-vous une question ouverte à lier? En substance, vous n'avez pas à écrire spécifiquement zéro octet, il vous suffit d'en finir avec votre réponse. – Task