hi,
will einen netzwerkchat mit console realisieren. hab dazu diverse tutorials gelesen und hab jetz folgendes:
als erstes der server: dieser code läuft in einem eigenen thread. für jeden client wird ein eigener thread gestartet,
client ist ein einfacher socket und bereits verbunden. der server nimmt die nachricht an und leitet sie an alle anderen clients weiter
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| while (true) { client[nr].Receive(bReceive, bReceive.Length, 0); sBuffer = ""; sBuffer = Encoding.ASCII.GetString(bReceive); sBuffer = sBuffer.TrimEnd('/', '0'); if (sBuffer != "") { for (int i = 0; i < client.Length; i++) { if (i != nr) { if (client[i].Connected) { client[i].Send(bReceive); } } } } } |
nun zum client: auch dieser code läuft in einem thread ab.
server ist der (bereits verbundene) socket. dieser teil des codes nimmt die nachricht an und gibt sie auf der console aus.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| while (true) {
server.Receive(bReceive, bReceive.Length, 0); sBuffer = Encoding.ASCII.GetString(bReceive); sBuffer = sBuffer.TrimEnd('/', '0'); if (sBuffer != "") { Console.WriteLine(sBuffer); } } |
ich kann leider nur eine nachricht senden, welche korrekt an alle clients weitergeleitet und angezeigt wird, danach trennt der server die verbindung.
und zwar an dieser stelle:
client[nr].Receive(bReceive, bReceive.Length, 0);
warum? und wie kann ich das verhindern?