Skip to content

RochBlondiaux/JEFT

Repository files navigation


Java Encrypted File Transfer

A simple encrypted file transfer application developed in Java.

GitHub code size in bytes Number of lines of code Code language count GitHub top language GitHub last commit

Secure file transfer application.
Explore the docs »

Table of Contents

  1. About The Project
  2. Getting Started
  3. Usage
  4. Application Design
  5. Improvements
  6. Contact

About The Project

Built With

Getting Started

To get a local copy up and running follow these simple steps.

Installation

  1. Clone the repo
    git clone https://github.com/github_username/repo_name.git
  2. Package the project
    mvn clean package
    

Usage

Server

To run the server, you just have to execute the jar file:

java -jar server.jar

Once you started the server, you can prompt command, there is the commands list:

  • stop
  • help

Client

The client can be run on any desktop os (OSx, Windows & Linux) by double clicking on it.

Once you launched the client interface, you needs to prompt an hostname. You can launch your own server and prompt its hostname.

Design

Packet concept

Packets are groups of information sent across the network. The packets can contain any type of information, they will ultimately be transformed into bytes to facilitate their transport. Once received, the bytes corresponding to the packet information will be transformed back to their initial state. Note that each packet have a unique identifier to be able to identify them, all these identifiers are stored in a centralized file.

Here are two diagrams explaining how they work: basic-packet-concept-diagram packet-concept-diagram

File Slicing concept

To transport files across the network, the best solution I've found is to split the files into slices. Each slice is sent across the network in specific packets. Once received, a confirmation packet is sent to the sender. Once the confirmation packet is received, a new slice is sent. This way you don't lose any slice in the process.

Here are a diagram explaining slices works: file-slice-concept-diagram

Improvements

Here is a list of things that can be greatly improved:

  • File slicing can be way more efficient.
  • File transfer can be improved by reworking how they work, especially by improving errors and results handling.
  • Client UI can be more intuitive with a single page containing all uploaded files and a button to upload new files. Maybe the hostname prompt can be removed to auto-connect to the server.

Contact

Roch Blondiaux :earth_americas: www.roch-blondiaux.com 📧 [email protected]

About

Java Encrypted File Transfer Application

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages