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 FD_SETSIZE
easily. You only need to define FD_SETSIZE
yourself before including the winsock2.h
header. For example, the following code increases FD_SETSIZE...