Implementation of a Chat Client using Socket Programming and extensive use of Multithreading and Process Synchronization. It supports file sending and receiving which is handled by the File Server. The Chat Server handles the sending and receiving of the one-to-one and group messages. Other functionalities like room creation are also supported by the Chat Client.