Mamey 📖 |
Heralex 📖 |
SergioRamirez 📖 |
Este es un proyecto universitario para una arquitectura Cliente-Servidor, utilizando sockets TCP, subprocesos, contenedores docker y redes docker.
- Hay 2 servidores, que pueden acceder a una base de datos.
- Hay clientes que pueden solicitar alta, registro, verificación de identidad y encriptación de mensajes a estos servidores.
- Todas las conexiones ocurren a través de un servidor "proxy", que maneja todas las conexiones de los clientes a los 2 servidores.
Una explicación de la arquitectura de este programa sería el siguiente UML
- Python 3.10
- pycryptodome 3.18.0
- Docker
- Poetry (Para el manejo de depenendencias y ambientes virtuales en el IDE)
Si no desea usar poetry, deberás instalar todas las dependencias en
pyproject.toml
manualmente con pip install
- Descarga el proyecto y accede a su directorio.
- Ejecute
pip install poetry
- Ejecute
poetry install
- Una vez que la poetry cree el entorno virtual desde
pyproject.toml
, agréguelo como intérprete para su IDE.
118 / 5,000 Translation results Translation result Una vez que haya configurado todo y el proyecto instalado para ejecutar el proyecto, debe ejecutar estos archivos en orden:
servidor_A.py
yservidor_B.py
proxy.py
client.py
El orden de ejecución es importante, de lo contrario los sockets de cada archivo no se comunicarán.
Paso 1: Cree cada imagen con los siguientes comandos de terminal:
cd cliente
sudo docker build -t imagen_cliente .
cd servidores
sudo docker build -t imagen_servidores .
cd proxy
sudo docker build -t imagen_proxy .
Paso 2: crea una red docker:
docker network create red_sergio_hernani_victor
Paso 3: Crea los contenedores con las imágenes y la red
sudo docker run --name contenedor_servidores --network red_sergio_hernani_victor -d imagen_servidores
sudo docker run --name contenedor_proxy --network red_sergio_hernani_victor -p 127.0.0.1:6000:6000 -d imagen_proxy
sudo docker run -it --name contenedor_cliente --network red_sergio_hernani_victor imagen_cliente
Con todos los pasos anteriores completados, debería poder interactuar con el contenedor con el cliente.
Lea el archivo LICENSE
para mas información.