Multithreading
Multi-Threaded Chat App (School Project)

Project Summary
This is a multi-threaded, multi-cased, and non-multiplexing chat app. It is built using WinSock2 in C++ and is made up of a server and multiple clients. The server listens for new client connections and spawns a dedicated thread for each one, allowing multiple users to chat in a shared room. When a client joins, they're prompted to enter a name, which is sent to the server and used as an identifier. Messages typed by users are broadcasted to all other connected clients. The communication is blocking and single-threaded on the main loop but uses additional threads to handle sending and receiving messages. The server identifies clients by their IP and tags their messages accordingly. Clients can exit by typing "quit", and the server continues to run until manually stopped.