{"id":19599786,"url":"https://github.com/gravetii/diztl","last_synced_at":"2025-04-27T16:32:13.744Z","repository":{"id":37544035,"uuid":"169950974","full_name":"gravetii/diztl","owner":"gravetii","description":"Share, discover \u0026 download files in your network 💥","archived":false,"fork":false,"pushed_at":"2021-04-26T20:44:09.000Z","size":12374,"stargazers_count":177,"open_issues_count":3,"forks_count":17,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-04-05T01:32:13.927Z","etag":null,"topics":["communication","distributed","distributed-systems","file-discovery","file-sharing","grpc","p2p","p2p-network","peer-to-peer","peers"],"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/gravetii.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-02-10T06:46:54.000Z","updated_at":"2025-01-05T17:12:28.000Z","dependencies_parsed_at":"2022-08-26T14:11:44.552Z","dependency_job_id":null,"html_url":"https://github.com/gravetii/diztl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravetii%2Fdiztl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravetii%2Fdiztl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravetii%2Fdiztl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gravetii%2Fdiztl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gravetii","download_url":"https://codeload.github.com/gravetii/diztl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251171491,"owners_count":21547112,"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":["communication","distributed","distributed-systems","file-discovery","file-sharing","grpc","p2p","p2p-network","peer-to-peer","peers"],"created_at":"2024-11-11T09:12:25.875Z","updated_at":"2025-04-27T16:32:10.698Z","avatar_url":"https://github.com/gravetii.png","language":"Java","funding_links":["https://www.paypal.me/sandeepdasika"],"categories":["网络编程"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"static/icon.png\" width=\"450\" height=\"400\" alt=\"Diztl Icon\" /\u003e\n\u003c/p\u003e\n\n# Diztl\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License: MIT\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://www.paypal.me/sandeepdasika\"\u003e\u003cimg src=\"https://img.shields.io/badge/Donate-PayPal-green.svg\" alt=\"Donate\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://gitter.im/diztl/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\"\u003e\u003cimg src=\"https://badges.gitter.im/diztl/community.svg\" alt=\"Chat on Gitter\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://saythanks.io/to/gravetii\"\u003e\u003cimg src=\"https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg\" alt=\"Say Thanks!\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nA peer-to-peer file discovery and sharing tool for LANs!\n\n## Implementation\nDiztl consists of two main components:\n- Tracker: The `Tracker`'s responsibility is to allow co-ordination and communication between the different `Node`s.\n- Node: A `Node` is basically any peer in the network. It can share resources as well as request for and download resources from other `Node`s in the network.\n\nThe current implementation isn't completely decentralized in that the search queries from a `Node` are sent to the `Tracker` which then broadcasts the request across all peers in the network, requesting them to reply with the files they have that might be of interest to the caller `Node`.\n\nOnce the requesting `Node` decides on the file it wants to download from the target peer, communication happens solely between the two peers without any intervention from the `Tracker`.\n\nWhen a `Node` first starts up, all the shared files are indexed and made available for search by other peers in the network. The `Node` then connects to the `Tracker` and registers itself after which it can participate in the network and communicate with other nodes.\nBy default, the download directory for each node is `\u003cuser's home directory\u003e/diztl/downloads`. The share and download folders can be configured by clicking on the `Configure dirs` button.\n\nFor the formats of different request-response structures, take a look at the `diztl/diztl.proto` file which contains the protobuf specifications as well as the gRPC service definitions.\n\n## Built With\n- JavaFX: An open source, client application platform for desktop built on Java.\n- gRPC: The project uses [gRPC](https://grpc.io/docs/) as its communication protocol along with protocol buffers as the data-interchange format.\n\n## Contributing\nPlease read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to the project.\n\n## Authors\n- Sandeep Dasika\n\n## License\nMIT\n\n---\n\n\u003cdiv\u003eIcons made by \u003ca href=\"https://www.flaticon.com/authors/kiranshastry\" title=\"Kiranshastry\"\u003eKiranshastry\u003c/a\u003e from \u003ca href=\"https://www.flaticon.com/\" \t\t\t    title=\"Flaticon\"\u003ewww.flaticon.com\u003c/a\u003e is licensed by \u003ca href=\"http://creativecommons.org/licenses/by/3.0/\" \t\t\t    title=\"Creative Commons BY 3.0\" target=\"_blank\"\u003eCC 3.0 BY\u003c/a\u003e\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgravetii%2Fdiztl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgravetii%2Fdiztl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgravetii%2Fdiztl/lists"}