Kennung Eins
2007-02-12, 11:20:12
1.)
Angenommen ich habe einen Server, der mir "AAAAAAAAAA" schickt. Wenn ich jetzt in meinem Client mittels NetworkStream.Read die Daten einlese, kommt dann garantiert immer "AAAAAAAAAA" beim Client an, oder kann es auch passieren, dass nur irgend ein Teil der Nachricht ankommt?
2.)
Jetzt das ganze noch ein bisschen konkretisiert:
Wird garantiert, dass in dem Moment, wo ich NetworkStream.Read ausführe, auch wirklich schon alle Bytes vom Client beim Server angekommen sind?
Beispiel: schlechte WLAN-Verbindung
- Der Server schickt "AAAAAAAAAA".
- Der Client registriert, dass Daten am Socket anliegen und fängt an zu lesen.
- Da das Netz echt beschissen ist, ist bisher beim Client nur "AAAA" angekommen.
- Der Client hört bei "AAAA" auf zu lesen, da bei ihm nicht mehr anliegt.
- Die restlichen Bytes sind dann wohl verloren
Können die oben genannten Fälle eintreten?
Ich stelle die Frage deswegen, weil ich bisher davon ausgegangen bin, dass .NET solcherlei Funktionalitäten schon mitbringt, dass sich also der Programmierer um diesen Datenverlust nicht kümmern muss. Doch inzwischen bin ich mir da nicht mehr sicher.
Angenommen ich habe einen Server, der mir "AAAAAAAAAA" schickt. Wenn ich jetzt in meinem Client mittels NetworkStream.Read die Daten einlese, kommt dann garantiert immer "AAAAAAAAAA" beim Client an, oder kann es auch passieren, dass nur irgend ein Teil der Nachricht ankommt?
2.)
Jetzt das ganze noch ein bisschen konkretisiert:
Wird garantiert, dass in dem Moment, wo ich NetworkStream.Read ausführe, auch wirklich schon alle Bytes vom Client beim Server angekommen sind?
Beispiel: schlechte WLAN-Verbindung
- Der Server schickt "AAAAAAAAAA".
- Der Client registriert, dass Daten am Socket anliegen und fängt an zu lesen.
- Da das Netz echt beschissen ist, ist bisher beim Client nur "AAAA" angekommen.
- Der Client hört bei "AAAA" auf zu lesen, da bei ihm nicht mehr anliegt.
- Die restlichen Bytes sind dann wohl verloren
Können die oben genannten Fälle eintreten?
Ich stelle die Frage deswegen, weil ich bisher davon ausgegangen bin, dass .NET solcherlei Funktionalitäten schon mitbringt, dass sich also der Programmierer um diesen Datenverlust nicht kümmern muss. Doch inzwischen bin ich mir da nicht mehr sicher.