Este projeto implementa um protocolo simplificado de compartilhamento de imagens chamado IDP2PI. Ele permite que clientes se registrem em um servidor central, compartilhem imagens com outros clientes e realizem operações como atualização, listagem e download de imagens em uma rede P2P.
servidor.py: Script que implementa o servidor, responsável por gerenciar os clientes e imagens compartilhadas.cliente.py: Script que implementa o cliente, permitindo o registro, atualização de imagens, listagem das imagens disponíveis e download das mesmas.- Diretório de imagens: Pasta onde ficam armazenadas as imagens compartilhadas pelos clientes.
O servidor responde aos seguintes comandos via protocolo UDP na porta 13377:
-
REG (Registro)
Registra um novo cliente.
Formato:REG <SENHA> <PORTA> <IMAGENS>
Resposta:OK <N>_REGISTERED_IMAGES -
UPD (Atualização)
Atualiza a lista de imagens de um cliente registrado.
Formato:UPD <SENHA> <PORTA> <IMAGENS>
Resposta:OK <N>_REGISTERED_FILESouERR IP_REGISTERED_WITH_DIFFERENT_PASSWORD -
LST (Listagem)
Lista todas as imagens compartilhadas na rede.
Formato:LST
Resposta: Lista de imagens disponíveis e seus respectivos clientes. -
END (Desconexão)
Desconecta um cliente da rede.
Formato:END <SENHA> <PORTA>
Resposta:OK CLIENT_FINISHEDouERR IP_REGISTERED_WITH_DIFFERENT_PASSWORD
O cliente executa as seguintes operações:
- Registro no servidor
- Atualização de imagens
- Listagem de imagens compartilhadas
- Download de imagens via protocolo TCP
- Desconexão da rede
Abra o terminal e entre na pasta 'src'
cd srcAbra o terminal e execute o servidor com:
python3 servidor.pyO servidor ficará ouvindo na porta 13377 para conexões UDP.
Abra o terminal e entre na pasta 'src'
cd srcNo terminal, execute o cliente passando o endereço IP do servidor e o diretório de imagens:
python3 cliente.py <IP_DO_SERVIDOR> <DIRETORIO_DE_IMAGENS>Exemplo:
python3 cliente.py 192.168.1.10 "../imagens"Após iniciar o cliente, você pode enviar os seguintes comandos no terminal do cliente:
-
Registrar no Servidor
- Comando:
1 - Permite registrar o cliente no servidor com senha, porta e lista de imagens.
- Comando:
-
Listar Imagens
- Comando:
2 - Lista todas as imagens disponíveis registradas no servidor e os clientes associados a cada imagem.
- Comando:
-
Baixar Imagem
- Comando:
3 - Baixa uma imagem específica disponível.
- Comando:
-
Atualizar Registro
- Comando:
4 - Atualiza o registro do cliente no servidor com novas imagens que ainda não foram cadastradas.
- Comando:
-
Remover Registro do Servidor
- Comando:
5 - Desconecta o cliente do servidor e remove seus registros e imagens associadas.
- Comando:
-
Sair
- Comando:
6 - Encerra o cliente e finaliza a execução.
- Comando:
📦 protocol-development
├── imagens
├── src
├── cliente.py
├── servidor.py