So jetzt sind wir genau an dem Punkt wo sich zeigt, das zwischen einem kleinen Chat und einem großen Programm Welten liegen
.
Also Counterstrike nutzt TCP und UDP, wobei das UDP wohl für den Chat ist. Wc3 nutzt TCP. WoW nutzt TCP. AOE nutzt sowohl TCP als auch UDP, wobei anscheinend beides benötigt wird, was wieder auf eine Trennung von Chat und Spiel bedeuten kann.
Warum man UDP für den Chat ist ja klar. Man ist unabhängig vom Server und kann trotz Servercrash noch mit einander in Verbindung bleiben. Das macht aber bei Spielen mit einem Hauptserver weniger Sinn, weil keiner der Clients als Host einspringen kann. Daher läuft ihr meist alles über den Hauptserver.
Zu dem Geschwindigkeitsthema kann ich wenig sagen. Ich werde noch testen ob non-blocking + threading + sleep(0) oder non-blocking + select besser sind.
Threads sind für viele ein rotes Tuch, weil es eine gewisse Disziplin und bestimmte Konzepte erfordert, um Probleme zu vermeiden. Threads sind auch bei der Fehler suche etwas heikel, aber wenn man die Anzahl der Berührungstellen(bei mir nur eine) klein hält, ist das gut machbar. Wie sich Threads bei Clientanzahlen von 100- auf die Leistung und Serverantwortzeit auswirkt weiß ich nicht.
Aber selbst wenn sich zeigen sollte, dass die Anzahl an Threads nicht handlebar ist, dann werde ich dennoch einen empfangsthread mit der Select Anweisung, um das Hauptprogramm zu entlasten.