Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/briuor/filetransfer-udp
- Owner: Briuor
- Created: 2019-05-22T15:50:52.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-06-12T01:18:36.000Z (over 5 years ago)
- Last Synced: 2024-10-12T12:47:30.929Z (2 months ago)
- Topics: file-transfer, filetransfer-udp, udp, udp-protocol, udp-server
- Language: C
- Homepage:
- Size: 16 MB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
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) - 2017001437O 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.