{"id":23860382,"url":"https://github.com/fanusaez/tp1-redes","last_synced_at":"2025-07-04T10:04:25.609Z","repository":{"id":269970006,"uuid":"908754816","full_name":"Fanusaez/TP1-Redes","owner":"Fanusaez","description":"Trabajo practico realizado para la materia Redes (TA048)","archived":false,"fork":false,"pushed_at":"2024-12-29T16:12:25.000Z","size":2687,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-22T11:32:25.377Z","etag":null,"topics":["7543","client-server","fiuba","python","rdt","redes","ta048","tcp","udp"],"latest_commit_sha":null,"homepage":"","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/Fanusaez.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}},"created_at":"2024-12-26T22:07:27.000Z","updated_at":"2024-12-29T16:12:28.000Z","dependencies_parsed_at":"2024-12-28T20:00:09.090Z","dependency_job_id":null,"html_url":"https://github.com/Fanusaez/TP1-Redes","commit_stats":null,"previous_names":["fanusaez/tp1-redes"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Fanusaez/TP1-Redes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fanusaez%2FTP1-Redes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fanusaez%2FTP1-Redes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fanusaez%2FTP1-Redes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fanusaez%2FTP1-Redes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fanusaez","download_url":"https://codeload.github.com/Fanusaez/TP1-Redes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fanusaez%2FTP1-Redes/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263489675,"owners_count":23474526,"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","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":["7543","client-server","fiuba","python","rdt","redes","ta048","tcp","udp"],"created_at":"2025-01-03T04:41:40.560Z","updated_at":"2025-07-04T10:04:25.582Z","avatar_url":"https://github.com/Fanusaez.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# File Transfer Application\n\nEste proyecto es el Trabajo Práctico N°1 de la materia **Introducción a los Sistemas Distribuidos (75.43)** en la Facultad de Ingeniería, Universidad de Buenos Aires. Su objetivo principal es la implementación de una aplicación cliente-servidor para la transferencia de archivos utilizando conceptos avanzados de comunicación en red.\n\n## Integrantes\n\n| Nombre                      | Legajo  |\n|-----------------------------|---------|\n| GALIÁN, Tomás Ezequiel      | 104354  |\n| SAEZ, Edgardo Francisco     | 104896  |\n| PUJATO, Iñaki               | 109131  |\n| LARDIEZ, Mateo              | 107992  |\n| ZACARIAS, Victor            | 107080  |\n\n## Tabla de Contenidos\n\n- [Descripción](#descripción)\n- [Características](#características)\n- [Requisitos](#requisitos)\n- [Ejecucion Cliente](#ejecucion-cliente)\n- [Ejecucion Servidor](#ejecucion-servidor)\n\n---\n\n## Descripción\n\nEl propósito de esta aplicación es implementar un protocolo de **Transferencia Confiable de Datos (RDT)** utilizando **UDP** como protocolo de transporte. Se desarrollaron dos versiones del protocolo:\n\n1. **Stop \u0026 Wait**\n2. **TCP con SACK (Selective ACKnowledgments)**\n\nAdemás, la aplicación permite forzar condiciones de error para validar la confiabilidad en la transferencia.\n\n## Características\n\n- **Transferencia de archivos binarios** de hasta 5 MB.\n- **Operaciones soportadas**:\n  - `UPLOAD`: Envío de archivos del cliente al servidor.\n  - `DOWNLOAD`: Descarga de archivos del servidor al cliente.\n- Garantiza la entrega de paquetes con una pérdida de hasta **10%** en los enlaces.\n- Manejo concurrente de múltiples clientes.\n- Desarrollo en **Python** siguiendo las especificaciones de PEP8.\n\n## Requisitos\n\n1. **Python 3.x** instalado.\n2. Librería estándar de sockets de Python.\n3. Herramienta **Mininet** para simular condiciones de red.\n\n### Instalación de Dependencias\n\n```bash\npip install flake8\n```\n\n## Ejecucion Cliente\n\n**NOTA: el flag -s no se encuentra implementado, usar por defecto el flag -n con alguno de los nombres de archivos contenidos dentro de del directorio archivos_de_prueba. Lo mismo aplica para el caso de especificar del destino de la descarga (operación download), no hay que especificar la ruta de descarga.**\n\n\n### Upload\n```bash\npython upload [-h] [-v|-q] [-H ADDR ] [-p PORT] [-s FILEPATH] [-n FILENAME] [-a ALGORITHM]\n```\n\nOpciones:\n\n| Opción         | Descripción                                  |\n|----------------|----------------------------------------------|\n| `-h`, `--help` | Muestra el mensaje de ayuda y sale.          |\n| `-v`, `--verbose` | Incrementa la verbosidad de la salida.    |\n| `-q`, `--quiet` | Disminuye la verbosidad de la salida.       |\n| `-H`, `--host` | Dirección IP del servidor.                   |\n| `-P`, `--port` | Puerto del servidor.                        |\n| `-s`, `--src` | Ruta del archivo fuente que se desea subir.  |\n| `-n`, `--name` | Nombre del archivo.                         |\n| `-a`, `--algorithm` | Algoritmo elegido (sw or sack)         |\n\n\n\n#### Ejemplo de uso\n```bash\npython3 upload.py -H 192.168.1.100 -p 8080 -s /ruta/al/archivo.txt -n archivo.txt -a sack\n```\n\n### Download\n```bash\npython download [-v|-q] [-H ADDR] [-p PORT] [-d FILEPATH ] [-n FILENAME ] [-a ALGORITHM]\n```\n\nOpciones:\n\n| Opción            | Descripción                                      |\n|-------------------|--------------------------------------------------|\n| `-h`, `--help`    | Muestra el mensaje de ayuda y sale.              |\n| `-v`, `--verbose` | Incrementa la verbosidad de la salida.           |\n| `-q`, `--quiet`   | Disminuye la verbosidad de la salida.            |\n| `-H`, `--host`    | Dirección IP del servidor.                       |\n| `-p`, `--port`    | Puerto del servidor.                            |\n| `-d`, `--dst`     | Ruta de destino del archivo descargado.          |\n| `-n`, `--name`    | Nombre del archivo.                             |\n| `-a`, `--algorithm` | Algoritmo elegido (sw or sack)               |\n\n\n#### Ejemplo de uso\n```bash\npython3 download.py -H 192.168.1.100 -p 8080 -s /ruta/al/archivo.txt -n archivo.txt -a sack\n```\n\n--- \n\n## Ejecucion Servidor\n\n```bash\npython start-server [-h] [-v|-q] [-H ADDR] [-p PORT] [-s DIRPATH] [-a ALGORITHM]\n```\nOpciones:\n\n| Opción              | Descripción                                   |\n|---------------------|-----------------------------------------------|\n| `-h`, `--help`      | Muestra el mensaje de ayuda y sale.           |\n| `-v`, `--verbose`   | Incrementa la verbosidad de la salida.        |\n| `-q`, `--quiet`     | Disminuye la verbosidad de la salida.         |\n| `-H`, `--host`      | Dirección IP del servidor.                    |\n| `-p`, `--port`      | Puerto del servidor.                          |\n| `-s`, `--storage`   | Directorio donde se almacenarán los archivos. |\n| `-a`, `--algorithm` | Algoritmo elegido (sw or sack).               |\n\n#### Ejemplo de uso\n```bash\npython3 start_server.py -H 192.168.1.100 -p 8080 -s /ruta/de/stotage/ -a sack\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffanusaez%2Ftp1-redes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffanusaez%2Ftp1-redes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffanusaez%2Ftp1-redes/lists"}