{"id":18258770,"url":"https://github.com/manoelcampos/sma-torrent","last_synced_at":"2025-10-18T09:24:46.680Z","repository":{"id":50226939,"uuid":"52444292","full_name":"manoelcampos/sma-torrent","owner":"manoelcampos","description":"A Java 15 BitTorrent client using JADE Multi-Agent Systems Framework ☕️🌊","archived":false,"fork":false,"pushed_at":"2022-07-27T21:50:41.000Z","size":3805,"stargazers_count":6,"open_issues_count":3,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-20T17:13:54.269Z","etag":null,"topics":["bittorrent","bittorrent-client","bittorrent-protocol","jade-framework","java","multi-agent-systems"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/manoelcampos.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-02-24T13:28:40.000Z","updated_at":"2025-01-10T10:26:30.000Z","dependencies_parsed_at":"2022-08-31T08:50:26.686Z","dependency_job_id":null,"html_url":"https://github.com/manoelcampos/sma-torrent","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manoelcampos%2Fsma-torrent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manoelcampos%2Fsma-torrent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manoelcampos%2Fsma-torrent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manoelcampos%2Fsma-torrent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/manoelcampos","download_url":"https://codeload.github.com/manoelcampos/sma-torrent/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247237682,"owners_count":20906330,"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":["bittorrent","bittorrent-client","bittorrent-protocol","jade-framework","java","multi-agent-systems"],"created_at":"2024-11-05T10:34:30.914Z","updated_at":"2025-10-18T09:24:41.634Z","avatar_url":"https://github.com/manoelcampos.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":":numbered:\n\n== SMA Torrent image:https://github.com/manoelcampos/sma-torrent/actions/workflows/maven.yml/badge.svg[link=https://github.com/manoelcampos/sma-torrent/actions/workflows/maven.yml]\n\nA Java 15 BitTorrent client using the http://jade.tilab.com[JADE Multi-Agent Systems (MAS) Framework].\nIt uses the infrastructure provided by the JADE framework as a tracker system that informs the clients the location of files they want to download using the BitTorrent protocol.\n\nEach client is a Java Swing Application that uses the resources provided by the JADE framework to share files between running clients. The JADE server provides all the features to find and exchange pieces of file among the clients.\nThe BitTorrent protocol was implemented following the https://wiki.theory.org/BitTorrentSpecification[specifications here].\n\nFor more information, refer to link:paper-sma-torrent.pdf[this paper] (only in Portuguese).\n\nCheck some sample torrents inside the link:src/main/java[src/main/java] dir.\n\n.JADE Server\nimage:imgs/jade-server.png[]\n\n.SMA Torrent GUI\nimage:imgs/sma-torrent-gui.png[]\n\n== Disclaimer\n\nThe project can be useful just as a proof of concept of Multi-Agent Systems (MAS), once the architecture of MAS using the JADE framework imposes a centralized server to allow the communication between the clients (agents/peers). \n\nSeveral BitTorrent systems have evolved to a decentralized management architecture that provides more independency, security, scalability and fault-tolerance. This way, the current project doesn't intend to be a viable BitTorrent client, but only a case study of MAS and JADE framework use.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND. For more information, see the link:LICENSE[license file].\n\n== How to compile and run the project\n\nThe application cannot be run directly from the IDE or directly from its jar file.\nIf you try to run it, you will receive a message informing how to run the application.\n\nThe following steps show how to compile the project, start the JADE server and create several clients/agents in the same machine in order to test the BitTorrent client without needing several computers and network configurations.\n\nExecute the following commands in a terminal of a Unix-based operating system, such as Linux or Mac OS X.\n\n. Open a terminal in the project's root folder\n. Compile the project: `mvn package` to generate the project jar file.\n. Start the JADE server: `./0-start-server.sh` and wait until the JADE GUI is shown.\n. You can use the command `./1-create-clients.sh number-of-clients-to-create` to create several clients/agents at the folder `clients`. For instance, executing `./1-create-clients.sh 2` will create two clients named `cli1` and `cli2` at the `clients` folder. As the JADE framework requires that each client/agent has a alias, the scripts consider that when creating and executing a client.\n. To run each created client/agent you have to execute the command `./2-exec-client.sh agent-alias` for each client/agent you want to run. For instance, executing `./2-exec-client.sh cli1` will run the agent named `cli1` that has to be created previously at the folder `clients/cli1`.\n\nTo start seeding a file, you have to place the file and its respective torrent in the same directory and add it to a client/agent GUI.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanoelcampos%2Fsma-torrent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanoelcampos%2Fsma-torrent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanoelcampos%2Fsma-torrent/lists"}