A peer-to-peer file discovery and sharing tool for LANs!
Diztl consists of two main components:
- Tracker: The
Tracker's responsibility is to allow co-ordination and communication between the differentNodes. - Node: A
Nodeis basically any peer in the network. It can share resources as well as request for and download resources from otherNodes in the network.
The 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.
Once 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.
When 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.
By default, the download directory for each node is <user's home directory>/diztl/downloads. The share and download folders can be configured by clicking on the Configure dirs button.
For 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.
- JavaFX: An open source, client application platform for desktop built on Java.
- gRPC: The project uses gRPC as its communication protocol along with protocol buffers as the data-interchange format.
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to the project.
- Sandeep Dasika
MIT