Multiplexing Multiple Clients (Cont) After we store a set of file descriptors in a 'fd_set', we can ask the operating system to tell us when any of them becomes active for read (i.e.has some data to read off of it), active for write (i.e. has buffer space that allows writing into it), or active for exceptions (e.g. got 'out of band' data ready to be read). We may also specify the amount of time we want to wait, using a 'timeval' struct. It looks like this: struct timeval { time_t tv_sec; /* seconds. */ time_t tv_usec; /* microseconds. */ }; Passing a timeout containing '0,0' makes a poll and returns immediately. passing a NULL pointer as the timeout blocks until one of the sockets becomes active, or until an error occurs.