The final project is a hybrid P2P and clientserver messenger application that enable two clients to send and receive messages between one and the other
The developed project implement the following functionality:
- The project include two apps: Messenger Server App (MSA) and Messenger Client App (MCA).
- The communication between the MCA and MSA based on TCP (control messages).
- The communication between two MCA’s based on UDP (interaction between two clients).
- Messenger Server App and Messenger Client App using a CLI
- Programming in C++ in eclipse (JavaEE) / Linux enviroment
Guidelines:
○ lu - list all users
○ lcu - list all connected users
○ ls - list all sessions (two clients communicating)
○ lr - list all rooms
○ lru - list all users in this room
○ x - shutdown
○ c - connect to the server in the given ip
○ lu - print the user list from the server
○ lcu - print the connected users list
○ lr - print all rooms
○ lru - print all users in this room
○ login - login with the user and password
○ register - register the new user with the given password and login the user.
○ o - open a session with the user
○ or - enter a chat room user can be connected to only to one other user or chat room at a
time, calling o or or commands will disconnect other open session.
○ s - send a message
○ l - print the current status of the client (connected to “xyz”/not connected)
○ cs - disconnect the open session / exit from a room
○ cr - close a room
○ d - disconnect from server
○ x - close the app
To connect to the server the client will sign in using a username and a password (no encryption required):
○ The client can create a new user with a new password (unless
this user is already created).
○ To communicate with another client, the user will request to
open a session with the required user name.
○ The list of usernames and passwords will be saved into a file in
the server side.
○ The client is able to open a chat room.
○ A chat room may be closed only by its creator.
○ Each client can enter a chat room or leave it.
○ Once a client enters a chat room it will receive all messages sent
by all the other clients in the room, and all the clients will
receive his messages.
○ In order not to overload the server, all client communication is
P2P using UDP and does not pass through the server.