Messaging Application

Duration: March - April, 2010 Members: Rafat Rashid, Ehsan Nasiri Course: Computer Networks I, ECE361, UofT

About the Project

The project involves the development of a messaging application that registered users can use to communicate with each other over the Internet using TCP (a reliable data transfer protocol) and socket programming in c. These users can be using the same computer or be on different computers. An analog can be made to the basic function of yahoo or msn messenger.

Server: This application needs to be running on a single computer connected to the Internet to fulfil its very vital role of serving the client messaging applications connected to it. Its tasks include:
  • authenticating users who are registered in the server's database
  • managing the users connected to the server, the sessions they are part of (who can talk to whom) and relaying messages to one another
Client: These are the messaging applications that users use to communicate with each other over the Internet (with the help of the server).

For 2 or more users to converse with each other, they must be:

  1. logged in to the server based on a login authentication command
  2. part of the same session (like a conversion in yahoo/msn messenger with multiple participants)

Capabilities of the Application

Here is what the messaging application allows the user to do:

LOGIN: An user must login to the server using a username/password combination to speak with other online users. The user must also specify the location of the server, identified by the computer's global IP address and the port the server is listening on.
QRY: find out which users are online (logged in to the server) and which sessions they are part of
QRYME: find out which sessions you are part of
NEWCONF: to create a new session (that you will also join)
JOIN: to join a session that already exists
LEAVE: to leave a session you are part of
LOGOUT: kicks you out of all sessions that you are part of and disconnects you from the server
MSG: to send a message to a session and therefore to all members who are part of that session
LS: lists all the commands available and how to use them
QUIT: logs out the user (if logged in) and exits from the application

Try the Application

The project was originally developed in Linux (the c source code compiled using gcc) but was soon ported to Windows as well (compiled using Cygwin). You can download the executable files below based on the system you have. The Windows version will work on XP, Vista and Win7 and probably others.