Here is a step-by-step number guessing game that demonstrates the use of sockets in a client-server architecture. The server generates a random number between 1 and 100 and the client tries to guess it.
Each iteration adds a new feature to the server, like support for persisting data or for multiple clients.