Beste möglichkeit über 10000 clients zu verwalten
-
hi leute,
kann mir einer sagen welcke art die beste ist um mehr als 10000 clients schnell zu verarbeiten?
die einzige möglichkeit die ich kenne ist, winsock mit select.danke für antworten,
marius
-
Ich finde die Quelle grad nicht mehr, aber hat select nicht eine Begrenzung auf ~1.000 Clients? Ansonsten müsste es damit gehen, oder aber unter Windows mit WSAEventSelect jedem Client-Socket ein Event zuweisen und mit WaitForMultipleObjects darauf warten; obwohl ich nicht weiß, wie mehr oder weniger performant sich WaitForMultipleObjects mit 10k Events verhält.
-
-
danke für die schnelle antwort,
wie könnten das denn so programme wie icq, msn oder die ganzen mmorpgs machen?
marius
-
Richtig, overlapping Sockets hatte ich ganz vergessen..
Eine ähnliche Frage gabs schonmal und hustbaer (bin mir nicht mehr 100% sicher, glaube aber er wars), hatte ein paar ungeheuer coole Posts dazu abgegeben!Da haben wir's doch: http://www.c-plusplus.net/forum/viewtopic-var-t-is-191168-and-highlight-is-.html

-
Overlapped IO + IO Completion Ports: Mit diesem Mechanismus werden Server (basierend auf Windows) gemacht.
Edit: Steht im vorher genannten Post schon (ein wenig anders ausgedeutscht).oder weniger performant sich WaitForMultipleObjects mit 10k Events verhält
WaitForMultipleObject kann nur bis MAXIMUM_WAIT_OBJECTS Events verwalten.
MAXIMUM_WAIT_OBJECTS ist 64 (bei mir: 32bit WinXP). Kann sein, dass es leicht variert.Gruss Simon
-
simon.gysi schrieb:
WaitForMultipleObject kann nur bis MAXIMUM_WAIT_OBJECTS Events verwalten.
MAXIMUM_WAIT_OBJECTS ist 64 (bei mir: 32bit WinXP). Kann sein, dass es leicht variert.Ups, hätte nicht gedacht, dass es so wenig ist

-
ok ...
werde aus allemnicht so ganz schlau^^
also overlapped is das beste?
marius
-
Ja, weil du da nicht warten musst. Es ist allerdings schwerer zu implementieren. Bei Non-Overlapped gibst du was in Auftrag, z.B. Senden oder Empfangen und die entsprechende Funktion kommt zurück, wenn der Auftrag ausgeführt wurde. Bei Overlapped gibst du den Auftrag, die Funktion kommt aber sofort zurück. Du musst/kannst dann halt immer wieder (oder auch nicht) abfragen, ob die Aufgabe fertig ist.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum WinAPI in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Schau dir mal Boost.Asio an. AFAIK bietet das plattform optimierte Möglichkeiten für I/O und du musst nicht mit den umständlichen C APIs rumfrickeln.
-
gib es einen unterschied zwischen asio und boost.asio ?
weil wie es aussieht kann man nur asio viel leichter installieren..