I have the experience to develop such a IM(chat) application.
I will develop a Server for listening network connection request, the Client application prompts user input the username and a group ID(maybe it's needed to group users?), and then Client will send login request to Server.
After Client is authorized, the data connection is established, until the Client is logout.
I will implement it by Java.