We've used select() in this book to multiplex between open sockets. The select() function is great because it is available on many platforms. However, if you have a large number of open sockets, you can quickly run into the limitations of select().
There is a maximum number of sockets you can pass to select(). This number is available through the FD_SETSIZE macro.
This chapter's code repository includes a program, setsize.c, which prints the value of FD_SETSIZE.
The following screenshot shows this program being compiled and run on Windows 10:
The preceding screenshot shows FD_SETSIZE is 64 on this system. Although Windows's default size for FD_SETSIZE is quite low, it is common to see higher values on other systems. The default value of FD_SETSIZE on Linux is 1024.
On Windows, it is possible to increase...