Complex Servers
A real server should be able to handle multiple simultaneous client connections and be robust enough to handle situations where the communications link has failed, or the remote machine has unexpectedly stopped communicating.
There are several ways to handle simultaneous connections. Usually, these involve the use of processes or threads, and in other cases, the use of socket multiplexing as described in
Socket Multiplexing. Handling communications issues can usually be done by using the error model to detect failures as described in
Handling Errors.