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.
- Package error correction system
- Sequence diagram
- Host and Client window
- Clone and install
- Prepare configuration and run
- Tech stack
- Project status
- License
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.
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
- Build and install shared library via:
$ mvn -N clean package install
- Create executable JAR file for modules:
$ mvn -pl "<module>" clean assembly:assembly
where <module>
is client
or host
.
- 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.
- 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 is finished.
This application is on Apache 2.0 License.