Maximale Anzahl unterstützter Sockets
Die maximale Anzahl von Sockets, die von einem bestimmten Windows Sockets-Dienstanbieter unterstützt werden, ist implementierungsspezifisch. Der Microsoft Winsock-Anbieter beschränkt die maximale Anzahl unterstützter Sockets lediglich durch den verfügbaren Arbeitsspeicher auf dem lokalen Computer. Winsock-Anbieter von Drittanbietern können jedoch Einschränkungen für die Anzahl der unterstützten Sockets aufweisen. Eine Anwendung sollte keine Annahmen bezüglich der Verfügbarkeit einer bestimmten Anzahl von Sockets machen. Weitere Informationen zu diesem Thema finden Sie unter WSAStartup.
FD_SET und select
Eine Reihe von FD_XXX-Makros ist in der Headerdatei Winsock2.h für die Verwendung bei der Portierung von Anwendungen aus der UNIX-Umgebung zu Windows definiert. Diese Makros werden mit den Funktionen select und WSAPoll zum Portieren von Anwendungen zu Windows verwendet. Die maximale Anzahl von Sockets, die eine Windows Sockets-Anwendung verwenden kann, ist von der Manifestkonstante FD_SETSIZE nicht betroffen. Dieser in der Headerdatei Winsock2.h definierte Wert wird zum Erstellen der fd_set-Strukturen verwendet, die mit der select-Funktion verwendet werden. Der Standardwert in Winsock2.h ist 64. Wenn eine Anwendung so konzipiert ist, dass sie mithilfe der Funktionen select und WSAPoll mit mehr als 64 Sockets arbeiten kann, sollte im Rahmen der Implementierung das Manifest FD_SETSIZE in jeder Quelldatei definiert werden, bevor die Headerdatei Winsock2.h eingeschlossen wird. Eine Möglichkeit hierfür kann sein, die Definition in die Compileroptionen im Makefile einzuschließen. Sie können beispielsweise „-DFD_SETSIZE=128“ als Option zur Compiler-Befehlszeile für Microsoft C++ hinzufügen. Es muss betont werden, dass das Definieren von FD_SETSIZE als ein bestimmter Wert keine Auswirkungen auf die tatsächliche Anzahl von Sockets hat, die von einem Windows Sockets-Dienstanbieter bereitgestellt werden. Dieser Wert wirkt sich nur auf die FD_XXX-Makros aus, die von den Funktionen select und WSAPoll verwendet werden.
Zugehörige Themen