Alternative Bibliothek:
Sie sollten Folgendes in Betracht ziehen Asio erhöhen . Es handelt sich um eine plattformübergreifende Netzwerkbibliothek, die viele der anfallenden Aufgaben vereinfacht.
Sie finden die Beispiel-Quellcode, den Sie hier suchen .
Über die 64er-Grenze:
Es gibt keine feste 64er-Verbindungsgrenze, die Sie bei einem guten Design erleben werden. Wenn Sie eine Art von Threading-Modell verwenden, werden Sie diese Einschränkung nicht erleben.
Hier finden Sie einige Informationen über den Grenzwert, von dem Sie gehört haben:
4.9 - Was sind die Grenzen der "64 Steckdosen"?
Es gibt zwei 64-Sockel-Beschränkungen:
Der Win32-Ereignismechanismus (z.B. WaitForMultipleObjects()) kann nur nur auf 64 Ereignisobjekte gleichzeitig warten. Winsock 2 bietet die WSAEventSelect() Funktion, mit der Win32-Ereignis-Mechanismus verwenden können, um auf Ereignisse auf Sockets zu warten. Da die Funktion Win32-Ereignis-Mechanismus verwendet, können Sie nur auf Ereignisse für 64 Sockets gleichzeitig warten gleichzeitig warten. Wenn Sie auf mehr warten wollen als 64 Winsock-Ereignisobjekte gleichzeitig warten wollen, müssen Sie mehrere Threads verwenden, die jeweils auf nicht mehr als 64 der Sockets warten.
Die Funktion select() ist ebenfalls eingeschränkt in bestimmten Situationen auf 64 Sockets gleichzeitig Sockets gleichzeitig zu warten. Die FD_SETSIZE Konstante, definiert in winsock.h definiert ist, bestimmt die Größe der fd_set Strukturen, die Sie an select() übergeben. Sie ist standardmäßig auf 64 definiert. Sie können diese Konstante auf einen höheren Wert setzen bevor Sie #include winsock.h einbinden, und dies wird den Standardwert überschreiben. Leider ist mindestens ein Nicht-Microsoft-Winsock-Stack und einige Layered Service Providers den Standardwert Standardwert von 64 an; sie ignorieren Sockets jenseits der 64. in größeren fd_sets.
Sie können ein Testprogramm schreiben, um zu versuchen auf den Systemen, die Sie unterstützen wollen zu unterstützen, um zu sehen, ob sie nicht eingeschränkt sind. Wenn dies der Fall ist, können Sie mit Threads umgehen, genauso wie Sie wie bei Ereignisobjekten.
Quelle