This project was developed during the Distributed Systems course taken in Universidad Carlos III de Madrid during my Computer Science and Engineering Bachelor's degree. It consists of a distributed chat system that allowed multiple distributed Java clients to be connected by means of a Server coded in C that handles the client-server connections using RPCs.
IMPORTANT NOTE: IF THE CLIENTS ARE TO BE EXECUTED IN THE SAME MACHINE, IT IS RECOMMENDED TO USE LOOPBACK IP ADDRESSES (INSTEAD OF THE PUBLIC IP) TO AVOID CONNECTIVITY PROBLEMS
Navigate to the root directory and run make
in the terminal.
In the root directory, open 5 Terminals and then execute the following commands:
- Terminal 1:
java -cp . md5.server.endpoint.MD5Publisher
- Terminal 2:
./storeServer
- Terminal 3:
./server -p <port_number> -s <storage_service_ip>
where port_number is the port number in which the Server Service will be running, and storage_service_ip is the IP address of the Storage Service that is shown in Terminal 2
- Terminal 4:
java -cp . client -s <messaging_service_ip> -p <port_number> -w <md5_service_ip:md5_service_port>
where messaging_service_ip is the IP address of the messaging service that is shown in Terminal 3; port_number is the same port number indicated in the output of Terminal 3; and md5_service_ip:md5_service_port is the IP address and the port number that are shown in Terminal 1, in the format IP:port
- Terminal 5:
./monitor <storage_service_ip> <client> <message_id>
where storage_service_ip is the IP address that is shown in Terminal 2
Terminal 4 will execute the client and can be replicated as many times as desired to create other clients and communicate between them in real time
Further and more detailed explanation of how the application works is provided in the report.pdf file