How can I listen on more than one port at a time?


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_set socklist;

       FD_ZERO(&socklist); /* Always clear the structure first. */
       FD_SET(4, &socklist);
       FD_SET(6, &socklist);
       FD_SET(10, &socklist);
       if (select(11, NULL, &socklist, NULL, NULL) < 0)
         perror("select");

  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.