Home
Softono
RemoteAssistance-Cpp

RemoteAssistance-Cpp

Open source C++
60
Stars
26
Forks
0
Issues
14
Watchers
5 years
Last Commit

About RemoteAssistance-Cpp

RemoteAssistance-Cpp is a C++ implementation of a remote assistance application similar to TeamViewer. The project is currently a work in progress and focuses on local screen mirroring, with network functionality not yet implemented. A Java Swing version is also available as a separate project. The software includes screen capture and double buffering features. Planned features include network communication using sockets, a broker server for session management between clients, and advanced image transmission algorithms. The development roadmap includes exploring Boost Asio or IOCP for networking, SIMD-based screen comparison for performance optimization, and OpenGL-based screen capture. The proposed architecture connects two clients through a broker server for session coordination, with direct data transmission between clients for screen sharing. The image transmission algorithm is planned to evolve through several stages: unconditional full data transfer, comparison-based delta transfer, random sampling comp

Platforms

Web Self-hosted Windows

Languages

C++

Links

RemoteAssistance-Cpp

RemoteAssistance like TeamViewer C++ version

https://dydtjr1128.github.io/RemoteAssistance-Cpp/

It also made java swing version => Link

This version is only implemented up to local mirroring, which has not yet used network.

ToDo

  • - [x] Screen capture
  • - [x] Double buffering
  • - [ ] Add network code(socket)
  • - [ ] Plan the Image Transmission
  • - [ ] Boost asio 또는 IOCP
  • - [ ] SIMD compare
  • - [ ] Capture screen based OpenGL

Sample demo

gif6

Structure

Client <-> Broker server(Session) <-> Client
  ↑                                     ↑
  └─────────────────────────────────────┘
                Data send

image image

A Plan about the Image Transmission Algorithm

  1. Unconditionally Full Data Transfer
  2. Compare with previous data and transfer if different
  3. Import data from random locations, compare with previous data, and transfer if different
  4. Divide image data into grid and compare each grid in parallel

This case must be considered comparison process(like SIMD..)