{"id":16214283,"url":"https://github.com/edbeeching/computer_networks_project","last_synced_at":"2025-07-15T16:42:50.955Z","repository":{"id":110047433,"uuid":"109703678","full_name":"edbeeching/Computer_Networks_Project","owner":"edbeeching","description":"A Torrent Filesharing application ","archived":false,"fork":false,"pushed_at":"2017-11-06T14:15:00.000Z","size":1989,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-07T22:18:02.495Z","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/edbeeching.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":"2017-11-06T14:11:01.000Z","updated_at":"2017-11-06T14:15:13.000Z","dependencies_parsed_at":"2023-04-14T13:48:14.713Z","dependency_job_id":null,"html_url":"https://github.com/edbeeching/Computer_Networks_Project","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/edbeeching/Computer_Networks_Project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edbeeching%2FComputer_Networks_Project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edbeeching%2FComputer_Networks_Project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edbeeching%2FComputer_Networks_Project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edbeeching%2FComputer_Networks_Project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edbeeching","download_url":"https://codeload.github.com/edbeeching/Computer_Networks_Project/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edbeeching%2FComputer_Networks_Project/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265445822,"owners_count":23766584,"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":[],"created_at":"2024-10-10T11:10:13.573Z","updated_at":"2025-07-15T16:42:50.929Z","avatar_url":"https://github.com/edbeeching.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Semester 2 Computer Networks Project\r\n## Université Jean-Monnet, Saint-Étienne, France.\r\n## Peer to Peer file sharing\r\n\r\n# Contents\r\n* Description of the subject\r\n* Instructions\r\n* Architecture\r\n* Acknowledgements\r\n\r\n## Subject\r\n\r\nThe objective of this project was to create a peer-to-peer filesharing program with the following features.\r\nThis is the collaborative work of 4 students: Jorge Chang, Sejal Jaiswal, Arslen Remaci and Edward Beeching.\r\n\r\n### Composer\r\nA small utility program that will take an input Composition (file) and generate a small Orchestra (.orch) file that can be used to share the large input file. An example orchestra file is as follows:\r\n\r\n    192.168.1.1:9999\r\n    maxresdefault.jpg\r\n    2953289a34e0cc2bf776decc3f8b86622d66b705\r\n    142044\r\n    16384\r\n    9\r\n    d53bff7979a4ac6f56da2f7085e6c2dff49656eb\r\n    a36d78065883e2b2cf4b02f61ebbdc3b5dca7a26\r\n    6dc13d0429aea3e39979a0191ca0aa80b6ab55d4\r\n    a9ff34e937e3bf554046072fa489339c3df550fc\r\n    0d597842e3d47c1d32c529d03f9f89054dcf3c76\r\n    2d1fc8ff5acdf2e63a694f1b99cae4a173933430\r\n    1d9de0a99e38435b7001f3c85020e388d73529a8\r\n    32fa02ffdbcde31deb1290a24beafcf5554f35b7\r\n    c0a63314f9a0e677ecdd5bebeb5b746024deabba\r\n\r\n### Conducter\r\nA networked program that provides IP:ports of users that are sharing parts of the Composition.\r\n\r\n### Member \r\nThe core program that is used to get/share the Composition, this requires the .orch file to know details of which composition to share/download.\r\n\r\n## Instructions for using the program\r\n\r\n### Dependancies\r\nThe software is tested to run on Python 3.5, it may work on Python 2.7 but this has not been tested.\r\nThe following dependancy is included in the GitHub repository **progressbar2-3.12.0-py2.py3-none-any.whl** , this can be installed with pip or any other wheel installation package, be sure that it is installing to python3 as some systems default to python2. Note the .whl file is cross-platform and has been tested on Windows, Linux (Ubuntu) and Mac OSX.\r\n\r\nFor installation, simply clone the GitHub repository. **Note there is a .gitignore on a directory called \"logs\" so you will need to make this directory yourself otherwise there will be an error writing the log file.**\r\n\r\n### Using the Composer\r\nIn order to share a new file the composer can be used from the command line.\r\n\r\nThere are 3 options:\r\n\r\n    composer.py filename\r\n    composer.py filename conductor_ip_port\r\n    composer.py filename conductor_ip_port part_size\r\n\r\nIf the ip and port are note know, the file line of the text file generated can be updated at a later stage.\r\n![Alt text](torrentNchill/screenshots/instructions_composer.png?raw=true \"Using the Composer\")\r\n### Using the Conductor\r\n\r\nThe conductor can be run from the command line with conductor.py as new members connect the conductor will maintain a list of IP:port of connected members.\r\n\r\n\r\n### Using the Member\r\n\r\nTo use the member to share/get a file run **member.py orch_filename** the member will then get the file. A small progress bar is shown with the parts remaining and percentage, you can press q at any time to quit (this may take up to 5 seconds to cleaning close all conections)\r\n![Alt text](torrentNchill/screenshots/instructions_member.png?raw=true \"Using the Member\")\r\n\r\n\r\n## System Architecture\r\n### Simple UML Diagram of Member\r\n\r\nClasses commiunicate through messages on blocking queues. The use of queues allows for easy testing of individual classes and functions.\r\n![Alt text](torrentNchill/screenshots/Simple_UML.png?raw=true \"A simplfied UML diagram\")\r\n\r\n### Example animation of Member architecture\r\nBelow is a simplified animation of the Member instantiation, connection and sharing one part.\r\n![Alt text](torrentNchill/screenshots/architecture.gif?raw=true \"Example of connecting and sharing a part\")\r\n\r\n## Acknowledgements\r\nWe would like to mention the following:\r\nhttp://home.wlu.edu/~levys/software/kbhit.py for the keyboard interupt class.\r\n\r\nRemi Emonet for the **netutils** function\r\n\r\nAll other code is written by the Authors of this project.\r\n\r\n\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedbeeching%2Fcomputer_networks_project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedbeeching%2Fcomputer_networks_project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedbeeching%2Fcomputer_networks_project/lists"}