This document outlines the design and implementation of a client/server chat application that allows clients to chat with each other, while also allowing a given client to send a message to all other clients. The server uses threads to manage client connections. Clients are required to first register with the server; the registration details of a client are persisted in an xml file, which acts as the database for the application.