Skip to content

Mutithreading screen sharing system created in Java Socket API with my own real-time video streaming "protocol" created on top of the UDP.

License

Notifications You must be signed in to change notification settings

milosz08/screen-sharing-system

Repository files navigation

Screen sharing system

Secured screen sharing system created with low-level Socket API written in Java SE 1.8 with JCA, JCE and Swing UI. Uses event-based reactive programming with observer pattern supplied by RxJava library.

YouTube Demo

Table of content

Package error correction system

App supports HD resolution, so each frame is split into smaller chunks due to the maximum UDP frame size (65kb). I decided to create simple error correction system, because UDP protocol can loose the packets which caused visible artifacts in result video stream.

TL;DR: If the image fragments were not transmitted in the correct order, frame is not displayed in the user interface. Solves the problem of displaying artifacts in the image.

Sequence diagram

Host and Client window

  • Host window

  • Client window

Clone and install

To install the program on your computer, use the command below (or use the build-in GIT system in your IDE environment):

$ git clone https://github.com/Milosz08/screen-sharing-system

Prepare configuration and run

  1. Build and install shared library via:
$ mvn -N clean package install
  1. Create executable JAR file for modules:
$ mvn -pl "<module>" clean assembly:assembly

where <module> is client or host.

  1. Optionally, build all modules via (for UNIX system):
$ ./package

or for Windows system:

.\package.bat

All executable JAR files will be available in .bin directory.

Tech stack

  • Java SE 1.8
  • JCA (Java Cryptography Architecture)
  • JCE (Java Cryptography Extension)
  • Swing UI, AWT
  • RxJava (reactive pattern)
  • Imgscalr (image processing)
  • Apache Commons Lang, IO (utilities)
  • Logback with Slf4j api
  • JFreeChart (data transfer linear plot)
  • Bcrypt (password hashing)
  • Lombok (accessor annotations)
  • Jackson (json processing)

Project status

Project is finished.

License

This application is on Apache 2.0 License.

About

Mutithreading screen sharing system created in Java Socket API with my own real-time video streaming "protocol" created on top of the UDP.

Topics

Resources

License

Stars

Watchers

Forks

Languages