How can I listen on more than one port at a time?
The best way to do this is with the select() call. This tells the
kernel to let you know when a socket is available for use. You can
have one process do i/o with multiple sockets with this call. If you
want to wait for a connect on sockets 4, 6 and 10 you might execute
the following code snippet:
FD_ZERO(&socklist); /* Always clear the structure first. */
if (select(11, NULL, &socklist, NULL, NULL) < 0)
The kernel will notify us as soon as a file descriptor which is less
than 11 (the first parameter to select()), and is a member of our
socklist becomes available for writing. See the man page on select()
for more details.