1. create, open, bind and set to listen a new TCPServer instance 2. accept a new connection on a new TCPSocket instance 3. set the TCPSocket to non-blocking mode 4. call TCPSocket::recv TCPSocket::recv blocks indefinitely if no data is pending or received.