Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/briuor/filetransfer-udp

FileTransfer-UDP é um sistema de troca de arquivos entre dois clientes através de um servidor utilizando arquitetura P2P com protocolo UDP.
https://github.com/briuor/filetransfer-udp

file-transfer filetransfer-udp udp udp-protocol udp-server

Last synced: 8 days ago
JSON representation

FileTransfer-UDP é um sistema de troca de arquivos entre dois clientes através de um servidor utilizando arquitetura P2P com protocolo UDP.

Awesome Lists containing this project

README

        

# FileTransfer-UDP

Autores:
- [Bruno Fernando Lopes](https://github.com/Briuor/) - 2017014669
- [Érick de Oliveira Teixeira](https://github.com/ErickOliveiraT) - 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.

### 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)
```sh
$ make
$ cd server
$ ./server
```
- Execução do Cliente Semeador (Terminal 2)
```sh
$ cd cliente_envia
$ ./client
```
- Execução do Cliente Baixador (Terminal 3)
```sh
$ 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:

```sh
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.