5. Asynchronous TCP sockets for nonblocking server

This server users asynchronous sockets to accept connections and read
from and write to sockets. This is non-blocking I/O, because the main process
does not wait for a read or write to finish before performing other tasks,
such as reading and writing to other sockets.