Esta aplicação cliente-servidor foi desenvolvida para fornecer um transporte confiável de dados em um ambiente onde ocorrem perdas de pacotes e erros simulados. O projeto utiliza sockets para comunicação entre cliente e servidor e implementa mecanismos de controle de fluxo e controle de congestionamento, garantindo a integridade e a entrega dos dados.
- Conexão com o Servidor: Permite conexão ao servidor via localhost ou IP.
- Envio de Pacotes: Capacidade de enviar pacotes individuais ou em grupos (rajadas).
- Simulação de Erros: Possibilidade de inserir erros de integridade em pacotes específicos.
- Atualização Dinâmica: A janela de recepção do servidor é atualizada em tempo real, considerando as confirmações recebidas e perdas de pacotes.
- Gerenciamento de Pacotes: O servidor pode marcar pacotes que não serão confirmados e incluir erros de integridade nas confirmações.
- Confirmações Negativas: Capacidade de sinalizar ao cliente sobre confirmações negativas.
- Negociação de Protocolo: O cliente e o servidor podem negociar se utilizarão repetição seletiva ou o protocolo Go-Back-N.
- Janela de Recepção: A janela de recepção é informada e atualizada dinamicamente para o cliente.
Um protocolo de aplicação foi desenvolvido e documentado, incluindo regras para:
- Requisições e respostas
- Soma de verificação
- Número de sequência
- Reconhecimento e reconhecimento negativo
- Controle de janela e paralelismo
A aplicação permite a simulação de falhas de integridade e perdas de mensagens, possibilitando a inserção de 'erros' que podem ser verificados pelo servidor.
- Ambiente: A aplicação requer um ambiente que suporte sockets para a comunicação entre cliente e servidor.
- Linguagem: O projeto foi desenvolvido em python.
- Thomaz Lima - trl@cesar.school 📩
- Pedro Henrique Silva - phss@cesar.school 📩
- Sofia Saraiva - spscl@cesar.school 📩
- André Goes - algcf@cesar.school 📩
- Evaldo Galdino - egcf@cesar.school 📩