3.2.1. Serving Multiple Clients
There is one problem with the simple server in the preceding example. Suppose we want to allow multiple clients to connect to our server at the same time. Typically, a server runs constantly on a server computer, and clients from all over the Internet might want to use it at the same time. Rejecting multiple connections allows any one client to monopolize the service by connecting to it for a long time. We can do much better through the magic of threads.
Every time we know the program has established a new socket connection—that is, every time the call to
accept() returns a socket—we will launch a new thread to take care of the connection between the server and that client. The main program will just go back and ...