Weiß NetworkStream.DataAvailable, ob der Sendepuffer des Senders leer ist? Oder zeigt es einfach an, ob der Lesepuffer des Empfängers Daten enthält? Ich nehme an, dass letzteres der Fall ist...
Insbesondere für einige Socket-Arbeiten, die eine laufende Konversation, ich derzeit eine Länge-Präfix verwenden, so dass der Empfänger genau weiß, wie viele Daten in der aktuellen Charge ist; jedoch habe ich ein .patch, die ich NetworkStream.DataAvailable stattdessen verwenden gesendet. Meine Sorge ist, dass dies mir nur sagen wird, was der Empfänger bekommen hat - nicht was der Sender ursprünglich gesendet hat - aber ich bin kein Socket-Experte.
Liege ich falsch? Oder ist length-prefix der richtige Weg?
(beachten Sie, dass ich nicht einfach Read(), bis der Stream geschlossen ist, da mehrere Stapel auf der gleichen Verbindung gesendet werden, und es ist wichtig, dass ich jeden Stapel als separate behandeln; wenn ich zu viel in einem Stapel lesen (auch wenn es gepuffert und verworfen wird), dann wird die Konversation zu brechen).