This project implements a distributed algorithm for communication between nodes in a network using **Sockets**. The code is designed to be containerised using Docker.
## Prerequisites
- Python 3.x
- Docker and Docker Compose
## Description
Each node in the network has a configuration file that lists its neighbors.
The exercise involves the following steps, [file](./sock.py):
1. Initalisation:
- Each node reads its neighbors file.
- Each node starts a server socket to listen for incoming connections
2. Message Exchange:
- During the first *x* iterations, each node sends a message of type REQUEST_WEIGHT to all its neighbors.
- Upon receiving a message of type REQUEST_WEIGHT, a node responds by sending back a message of type WEIGHTS to the requesting node.
- The algorithm runs for a total of *N* iterations
- Each node logs its activities and messages
## Dockerfile
Once your code is developed, it is time to build the container image, [DockerFile](./Dockerfile)