Question

Im looking to create a sort of remote desktop software, and it is required that i transfer the users screen over the internet to the viewer.

My goal is to create an optimized capture so that i dont have to transfer the whole screen 10 times a second..

The idea i had was take the screenshots on the local computer and then determine only the CHANGED pixels from the last screenshot. So basically if they did something, only what changed on the screen would be sent and reconstructed on the other side, so i can save bandwidth and speed it up for slower internet connections.

My questions:

  1. How can i compare a new screenshot to an old one and determine what has changed.
  2. How would i send the information discovered in step 1 over a standard TCP stream.
  3. How would i reconstruct that data to display the screen updates successfully once on the other side.
Was it helpful?

Solution

VNC is an open source remote desktop software. I recommend you download the source and take a look at how it works. However I am sure its not written in C#.

Here is a link to TightVNC's source code: http://www.tightvnc.com/download.php

FogCreek recently used the VNC source for its CoPilot product. You can download it's source from here as well: https://www.copilot.com/faq/#t28

Hope that helps

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top