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 differentNode
s. - Node: A
Node
is basically any peer in the network. It can share resources as well as request for and download resources from otherNode
s 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