{"id":31391665,"url":"https://github.com/andreirech/labredes-t1","last_synced_at":"2025-09-29T02:38:12.497Z","repository":{"id":317066283,"uuid":"1063631234","full_name":"AndreiRech/LabRedes-T1","owner":"AndreiRech","description":"Trabalho 1 referente a disciplina de Laboratório de Redes na PUCRRS","archived":false,"fork":false,"pushed_at":"2025-09-28T15:05:06.000Z","size":383,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-28T17:21:15.518Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AndreiRech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-24T22:41:34.000Z","updated_at":"2025-09-28T15:05:10.000Z","dependencies_parsed_at":"2025-09-28T17:21:18.243Z","dependency_job_id":"38f2f3a2-fe52-409a-ac84-5e8867bf56cf","html_url":"https://github.com/AndreiRech/LabRedes-T1","commit_stats":null,"previous_names":["andreirech/labredes-t1"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/AndreiRech/LabRedes-T1","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreiRech%2FLabRedes-T1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreiRech%2FLabRedes-T1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreiRech%2FLabRedes-T1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreiRech%2FLabRedes-T1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AndreiRech","download_url":"https://codeload.github.com/AndreiRech/LabRedes-T1/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreiRech%2FLabRedes-T1/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277458395,"owners_count":25821318,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-29T02:00:09.175Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-29T02:38:09.320Z","updated_at":"2025-09-29T02:38:12.486Z","avatar_url":"https://github.com/AndreiRech.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Aplicação Cliente/Servidor de Transferência de Arquivos\n\nEste 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.\n\n## Estrutura dos Arquivos\n\nO projeto utiliza a seguinte estrutura de diretórios para organizar os arquivos do cliente, do servidor e os logs de execução.\n\n```\n├── ClientFiles/          # Diretório para armazenar os arquivos a serem enviados pelo cliente\n│   └── arquivo200MB.bin\n├── LogFiles/             # Diretório criado pelo cliente para salvar os logs de conexão\n│   └── log_cliente_...\n├── ServerFiles/          # Diretório criado pelo servidor para armazenar arquivos recebidos\n│   └── arquivo200MB.bin\n├── client.py            # Script do cliente\n└── server.py           # Script do servidor concorrente\n```\n\n## Pré-requisitos\n\n* **Python 3.x**\n\nNão são necessárias bibliotecas externas para a execução do projeto.\n\n## Como Executar a Aplicação\n\nSiga estes passos para configurar o ambiente e executar o sistema.\n\n### Passo 1: Preparação do Ambiente\n\n1.  **Crie um arquivo de teste dentro de `ClientFiles`:**\n    * **No Windows (Prompt de Comando):**\n        ```cmd\n        cd ClientFiles\n        fsutil file createnew arquivo200MB.bin 200000000\n        ```\n    * **No Linux ou macOS:**\n        ```bash\n        dd if=/dev/urandom of=ClientFiles/arquivo200MB.bin bs=1M count=191\n        ```\n\n### Passo 2: Iniciar o Servidor\n\n1.  Abra um terminal no diretório src do projeto.\n2.  Execute o seguinte comando para iniciar o servidor:\n    ```bash\n    python server.py\n    ```\n3.  O servidor ficará ativo e aguardando conexões na porta configurada:\n    ```\n    [ESCUTANDO] | Servidor | 0.0.0.0:23456\n    ```\n\n### Passo 3: Iniciar e Usar o Cliente\n\n1.  Abra um **novo terminal** no diretório src do projeto.\n2.  Execute `cliente.py` informando o IP e a porta do servidor. Para uma conexão local, use `127.0.0.1`.\n    ```bash\n    python client.py 127.0.0.1 23456\n    ```\n3.  O cliente se conectará e exibirá um prompt para receber comandos:\n    ```\n    Conectando ao servidor em 127.0.0.1:23456...\n    Conectado!\n    cliente\u003e\n    ```\n\n---\n\n## Comandos Disponíveis no Cliente\n\n### `list`\n\nLista todos os arquivos armazenados no diretório `ServerFiles` do servidor.\n\n* **Uso:**\n    ```\n    cliente\u003e list\n    ```\n\n### `put \u003ccaminho_do_arquivo\u003e`\n\nEnvia um arquivo do cliente para o servidor. **Lembre-se de incluir o diretório `ClientFiles` no caminho do arquivo.**\n\n* **Uso:**\n    ```\n    cliente\u003e put ClientFiles/arquivo200MB.bin\n    ```\n\n### `quit`\n\nEncerra a conexão com o servidor e gera um arquivo de log da sessão no diretório `LogFiles`.\n\n* **Uso:**\n    ```\n    cliente\u003e quit\n    ```\n\n## Geração de Logs\n\nAo 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.\n\n## Testando Concorrência\n\nPara testar o atendimento concorrente do servidor, execute o arquivo `clientes_concorrentes.bat`.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreirech%2Flabredes-t1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreirech%2Flabredes-t1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreirech%2Flabredes-t1/lists"}