Hi
Folgendes Problem. Ich entwickle grad ein Chat in c#. Ich sende also Pakete mit einem Code und die Darauffolgenden Daten.
Eine Nachricht ist zb so aus: "0100!Hallo Server". 0100=Code für Nachricht, !=Splitchar, Rest=Message
Also durch string[] command = msg.Split('!'); erhalte ich die einzelnen Pakete.
Wenn ich jetzt aber drei Pakete nacheinander Losschicke...
C#-Quelltext
1: 2: 3: 4: 5: 6:
| private void button1_Click(object sender, EventArgs e) { Client.Send("0100!Hallo Client =)"); Client.Send("0100!Heeey"); Client.Send("0100!TESTMSG dsgfdsggfg."); } |
Dann werden einige Pakete nicht einzeln verschickt, sondern zusammengefasst.
Send Function der Client Klasse:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| public static void Send(string msg) { byte[] buffer = AsciiEncoder.GetBytes(msg);
networkStream.Write(buffer, 0, buffer.Length); networkStream.Flush(); } |
Es wäre ja zu erwarten, dass drei einzelne Pakete ankommen, aber es sind meistens nur zwei:
"0100!Hallo Client =)" und
"0100!Heeey0100!TESTMSG dsgfdsggfg."
Ich weiss nicht warum das passiert. Theoretisch ist das ja gar nicht möglich.
Vielleicht ist networkStream.Flush() nicht schnell genug,
so dass es die 2. Message vor dem abschicken auch noch reinschreibt?
Hoffe ihr könnt mir helfen.
mfg
vampir
PS: 1 Beitrag in 4 Jahren - nicht schlecht oder?