Communicating using sockets in Java. Implementing a peer-to-peer chat client and server.