Ich möchte einen Server in C# programmieren (TCP), der viele Clients gleichzeitig packt, die über eine längere Zeit (Minuten bis Stunden) verbunden sind und vom Server Text empfangen sollen. Nach Anmeldung am Server (vor der Übertragung der Nachrichten), wird vom Client nichts mehr geschickt, der Server muss also nur den Socket-Stream bei einem neuen Client lesen und merken, wenn eine Verbindung unterbrochen wird.
Mein Problem ist jetzt, dass ich nicht weiß, wie ich das umsetzen soll. Die Texte werden wie in einem Chat (z.b. IRC) übertragen, also "senden" - "warten auf neuen Text" - "senden" (an mehrere Clients, aber nicht immer alle).
Ich kann schlecht für jede Clientverbindung einen neuen Thread aufmachen, da es unter Umständen viele Clients sein können. Deswegen ist meine Frage: Bringen da Threads überhaupt was, oder soll ich versuchen, den Text an alle Clients, die ihn empfangen sollen, nacheinander zu schicken? Es sollte aber möglichst gleichzeitig ankommen (es handelt sich meistens um die Länge eines Satzes), so dass man sich wie in einem IRC unterhalten kann.
Oder gibts da noch eine andere Möglichkeit?
Bei wikipedia steht, dass die meisten (?) IRC-Daemonen auch kein Threading nutzen. Schicken diese die Befehle auch nacheinander an die Clients oder wird das anders übertragen? Immerhin hat ein IRC-Server ja nicht nur 10 Benutzer
.
Mein Problem ist jetzt, dass ich nicht weiß, wie ich das umsetzen soll. Die Texte werden wie in einem Chat (z.b. IRC) übertragen, also "senden" - "warten auf neuen Text" - "senden" (an mehrere Clients, aber nicht immer alle).
Ich kann schlecht für jede Clientverbindung einen neuen Thread aufmachen, da es unter Umständen viele Clients sein können. Deswegen ist meine Frage: Bringen da Threads überhaupt was, oder soll ich versuchen, den Text an alle Clients, die ihn empfangen sollen, nacheinander zu schicken? Es sollte aber möglichst gleichzeitig ankommen (es handelt sich meistens um die Länge eines Satzes), so dass man sich wie in einem IRC unterhalten kann.
Oder gibts da noch eine andere Möglichkeit?
Bei wikipedia steht, dass die meisten (?) IRC-Daemonen auch kein Threading nutzen. Schicken diese die Befehle auch nacheinander an die Clients oder wird das anders übertragen? Immerhin hat ein IRC-Server ja nicht nur 10 Benutzer