Implementação de um serviço cliente-servidor de operações matemáticas utilizando Sockets em Python para Atividade: Comunicação com Sockets: UDP vs. TCP.
- Python 3.8+
- Compilador
protocinstalado na máquina - Biblioteca protobuf para Python:
pip install protobuf
Executar e registrar as saídas geradas:
Teste 1 (UDP 0% de perda):
- Servidor:
python calc_server_udp.py --loss-rate 0.0 - Cliente:
python calc_client_udp.py
Teste 2 (UDP 10% de perda):
- Servidor:
python calc_server_udp.py --loss-rate 0.1 - Cliente:
python calc_client_udp.py
Teste 3 (UDP 30% de perda):
- Servidor:
python calc_server_udp.py --loss-rate 0.3 - Cliente:
python calc_client_udp.py
Teste 4 (TCP Padrão):
- Servidor:
python calc_server_tcp.py - Cliente:
python calc_client_tcp.py
Antes de iniciar o servidor e o cliente, é obrigatório gerar o código Python a partir do esquema .proto.
- Compilar o Protobuf:
protoc --python_out=. calc.proto
(Isso gerará o arquivo calc_pb2.py no seu diretório)
- Executar o Servidor (Protobuf):
python calc_server_proto.py
- Executar o Cliente (Protobuf):
python calc_client_proto.py
Execute o cliente 3 vezes contra o servidor UDP, variando a taxa de perda simulada: 0%, 10%,30%. Depois, execute uma vez contra o servidor TCP.
Para cada execução, registre:
| Métrica / Registro | 0% | 10% | 30% | TCP | PROTO |
|---|---|---|---|---|---|
| Tempo total da sequência completa | 0.03 s | 1.53 s | 5.54 s | 0.01 s | 0.01 s |
| RTT médio | 1.44 ms | 76.48 ms | 276.86 ms | 0.08 ms | 0.10 ms |
| RTT máximo | 14.01 ms | 512.45 ms | 1507.05 ms | 0.48 ms | 0.59 ms |
| Número de retransmissões (apenas UDP) | 0 | 3 | 11 | x | x |
| Requisições perdidas definitivamente (esgotou tentativas) | 0 | 0 | 0 | x | x |
Parte 4: Meça e registre o tamanho médio das mensagens (em bytes) e compare com o Protocolo textual da Parte 2.
tamanho médio das mensagens Parte 2: 39.85 bytes
tamanho médio das mensagens Parte 4: 41.80 bytes