https://github.com/andreirech/labredes-t1
Trabalho 1 referente a disciplina de Laboratório de Redes na PUCRRS
https://github.com/andreirech/labredes-t1
Last synced: 9 months ago
JSON representation
Trabalho 1 referente a disciplina de Laboratório de Redes na PUCRRS
- Host: GitHub
- URL: https://github.com/andreirech/labredes-t1
- Owner: AndreiRech
- Created: 2025-09-24T22:41:34.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-09-28T15:05:06.000Z (9 months ago)
- Last Synced: 2025-09-28T17:21:15.518Z (9 months ago)
- Language: Python
- Size: 374 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Aplicação Cliente/Servidor de Transferência de Arquivos
Este projeto implementa um sistema simples de transferência de arquivos usando sockets TCP em Python. O servidor é capaz de lidar com múltiplos clientes de forma concorrente, e o cliente fornece uma interface de linha de comando para interagir com o servidor.
## Estrutura dos Arquivos
O projeto utiliza a seguinte estrutura de diretórios para organizar os arquivos do cliente, do servidor e os logs de execução.
```
├── ClientFiles/ # Diretório para armazenar os arquivos a serem enviados pelo cliente
│ └── arquivo200MB.bin
├── LogFiles/ # Diretório criado pelo cliente para salvar os logs de conexão
│ └── log_cliente_...
├── ServerFiles/ # Diretório criado pelo servidor para armazenar arquivos recebidos
│ └── arquivo200MB.bin
├── client.py # Script do cliente
└── server.py # Script do servidor concorrente
```
## Pré-requisitos
* **Python 3.x**
Não são necessárias bibliotecas externas para a execução do projeto.
## Como Executar a Aplicação
Siga estes passos para configurar o ambiente e executar o sistema.
### Passo 1: Preparação do Ambiente
1. **Crie um arquivo de teste dentro de `ClientFiles`:**
* **No Windows (Prompt de Comando):**
```cmd
cd ClientFiles
fsutil file createnew arquivo200MB.bin 200000000
```
* **No Linux ou macOS:**
```bash
dd if=/dev/urandom of=ClientFiles/arquivo200MB.bin bs=1M count=191
```
### Passo 2: Iniciar o Servidor
1. Abra um terminal no diretório src do projeto.
2. Execute o seguinte comando para iniciar o servidor:
```bash
python server.py
```
3. O servidor ficará ativo e aguardando conexões na porta configurada:
```
[ESCUTANDO] | Servidor | 0.0.0.0:23456
```
### Passo 3: Iniciar e Usar o Cliente
1. Abra um **novo terminal** no diretório src do projeto.
2. Execute `cliente.py` informando o IP e a porta do servidor. Para uma conexão local, use `127.0.0.1`.
```bash
python client.py 127.0.0.1 23456
```
3. O cliente se conectará e exibirá um prompt para receber comandos:
```
Conectando ao servidor em 127.0.0.1:23456...
Conectado!
cliente>
```
---
## Comandos Disponíveis no Cliente
### `list`
Lista todos os arquivos armazenados no diretório `ServerFiles` do servidor.
* **Uso:**
```
cliente> list
```
### `put `
Envia um arquivo do cliente para o servidor. **Lembre-se de incluir o diretório `ClientFiles` no caminho do arquivo.**
* **Uso:**
```
cliente> put ClientFiles/arquivo200MB.bin
```
### `quit`
Encerra a conexão com o servidor e gera um arquivo de log da sessão no diretório `LogFiles`.
* **Uso:**
```
cliente> quit
```
## Geração de Logs
Ao encerrar uma sessão com o comando `quit`, um arquivo de log é criado automaticamente na pasta `LogFiles`. Este arquivo registra as estatísticas da conexão, como duração, bytes transferidos e taxa de transmissão.
## Testando Concorrência
Para testar o atendimento concorrente do servidor, execute o arquivo `clientes_concorrentes.bat`.