Design and implement a chat system that allows multiple groups of users to chat. A
chat coordinator resides at a well-known network address, uses UDP for communication
with chat clients, sets up chat servers for each chat session, and maintains a chat
session directory. There is one chat server per chat session. A chat server uses TCP
for communication with clients. A chat client allows users to start, join, and leave a
chat session. Design and implement the coordinator, server, and client code.