Logo

Local Torrent

A local file sharing application which runs on a local area network (LAN).



Issues

Table Of Contents

About The Project

Screen Shot

Experience seamless file sharing within your local network with our innovative torrent application. Simply install the client application to join the network and start sharing files securely. This application ensures encrypted peer-to-peer connections, guaranteeing your privacy and confidentiality throughout your file-sharing experience. Say goodbye to concerns about unauthorized access – your communications are shielded from prying eyes, giving you peace of mind while you share files effortlessly.

Built With

This application is build using Java. Three major components include:

Getting Started

This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.

Prerequisites

To run this locally, you need Java version 17.

Installation

  1. Clone the repo
git clone https://github.com/parthlaw/local_torrent.git
  1. Install dependencies
./gradlew --refresh-dependencies
  1. You may need to clear gradle cache and perform previous step again to make you LSP pick up the new dependencies. Restart the LSP afterwards.
  2. Format the code after any changes.
./gradlew spotlessApply

5.Build and run the application.

./gradlew bootRun

Roadmap

  • Client Application: Setup Socket server with non-blocking I/O (Using Selectors).
  • Client Application: Send File and Receive File function.
  • Client Application: Setup Spring-boot http server for local webpage to connect.
  • Client Application: Setup Store class for Properties (config) file for the application.
  • Client Application: Setup local Queue service (LinkedBlockingQueue class) for http server to send commands to socket server.
  • Client Application: One extra client thread to connect with the server (Socket connection). This will send updates about changing rules (to be implemented in the future) and IP.
  • Client Application: Properties file is a resource shared among threads. Use mutex or semaphore to write to that file.
  • Server Application: Setup Socket server to get IP updates and send rule updates.
  • Server Application: Store IP-username mapping in in-memory database (SQLite).

Authors