DIRECTORY STRUCTURE client --Client.java This is the main application for client side, it creates the communication channel, receives the messages and shows them to the user --ClientGUI.java This class builds the user interface to interact with the user server --Server.java This is the main application of the server side, it creates a ServerSocket, accepts connections, and if the two aprties with matching identifiers are connected, it creates a MessageExchanger and runs it by a new thread. --ClientHandle.java This class is the image of a client at server side, after a client connected to the server, server creates an object of ClientHandle type. ClientHandle obtains the input/output streams to client and provides some methods to read and write from the streams. --MessageExchanger.java This class is a runnable java class which holds ClientHandles of two communicating parties and exchanges the messages between them. Each MessageExchanger object is run by a Thread. HOW TO COMPILE There are two sides of the application (client and server) for each side go to the directory containing the .java files and in the command prompt enter "javac *.java". The binary .class files will be generated in the same folder HOW TO RUN The server side must have started before running the client side. To run the server go to the folder containing compiled .class files of server side and type "java Server serverPort" For example: java Server 4444 To run a client go to the folder containing compiled .class files of client side and type "java serverIP|serverHostName serverPort selfIdentifier targetIdentifier". ServerIP or serverHostName serverPort must be the address and port number of the server that is currently running. selfIdentifier must be an alias you picked up for you and targetIdentifier must be the alias of the other party. In order for the communication the self and target identifiers of two parties must match. To illustrate two client parties (assuming the server is running on machine cs1.utdallas.edu, port 4444): java Client cs1.utdallas.edu 4444 john mike java Client cs1.utdallas.edu 4444 mike john