Autores:
- Bruno Fernando Lopes - 2017014669
- Érick de Oliveira Teixeira - 2017001437
O FileTransfer-UDP é um transferidor de arquivos entre clientes com o auxílio de um um servidor que intermedia a conexão de dois clientes, baseado na arquitetura P2P e no protocolo BitTorrent. O protocolo utilizado foi o UDP, portanto, os artifícios para garantia de integridade e segurança foram implementados na camada de aplicação.
Os comandos dever ser utilizados na pasta raíz do projeto(Diretorio FileTransfer-UDP).
- Execução do Servidor (Terminal 1)
$ make
$ cd server
$ ./server
- Execução do Cliente Semeador (Terminal 2)
$ cd cliente_envia
$ ./client
- Execução do Cliente Baixador (Terminal 3)
$ cd cliente_baixa
$ ./client
Após executar o servidor e os dois clientes, o arquivo a ser baixado deve ser informado no terminal do cliente baixador, com o formato "nome.extensão".
Exemplo: musica.mp3
(O arquivo musica.mp3 existe no diretorio do cliente_envia e pode ser usado para teste)
(O arquivo a ser baixado deve estar previamente no diretório do cliente_envia)
O arquivo baixado pelo cliente baixador se encontra dentro do diretorio cliente_baixa com prefixo "copied" antes do nome original do arquivo baixado.
As informações que são impressas no período de transferência dos arquivo, dizem respeito a cada um dos pacotes que são transferidos. São elas, respectivamente:
- Número de Sequência
- ACK
- Soma de Verificação
As operações são feitas sobre cada um dos bits do buffer de cada um dos pacotes transferidos, seguindo o seguinte pseudocódigo:
soma <- 0
para i de 0 a TAM_BUFFER:
se buffer[i] = 1 (bin)
soma += 2*i
ou se buffer[i] = 0 (bin)
soma += i
O resultado da soma de verificação é salvo dentro do própio pacote em uma variável inteira. Quando o pacote chega, o cliente baixador calcula a soma de verificação novamente, com o mesmo algoritmo, e compara com o resultado presente no pacote. Caso o resultado não seja igual, ele solicita ao outro cliente que o mesmo pacote seja enviado novamente.