Skip to content

Latest commit

 

History

History
60 lines (46 loc) · 2.28 KB

readme.md

File metadata and controls

60 lines (46 loc) · 2.28 KB

FileTransfer-UDP

Autores:

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.

Instruções para Execuçã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.

Informações Impressas sobre os Pacotes

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

Explicações sobre a 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.