One way to look at a socket is as a special file. Like a file, it's a readable and writable data container. On some operating systems, network sockets are literally a special type of file whereas, on others, the implementation is more abstract.
At any rate, the concept of a socket has changed our lives because it allows machines to communicate and to coordinate I/O across a network. Sockets are the backbone of distributed computing.
In this recipe, we'll build a TCP client and server.