remote client desktop monitoring

kanak

Newcomer
Joined
Jan 9, 2005
Messages
16
Hi all .. i m developing a client server application ..and as a module i want to implement desktop monitoring of the client. I mean that from the server , administrator can view the client desktop and also what the client is doin at that time.

Those who have worked with windows xp might be knowing something called remote assistance and remote desktop. I just want to view the client desktop. If u know about netmeeting there is also a option available in which one user can actully view and also control the handling of the dessktop of the other user.

I m tryin to find out how this concept is used.So if anyone can help me out in the concept how to have a live view of the client desktop from the server.

The idea which i can think of is that in the client the application will take the snapshot of the screen every second and then pass the picture to the server.

Is this is the only way to do or i m thinking some other way. if anyone knows please help me out.......
 
How high quality do you need?
A project I worked for was thinking about using windows media encoder (http://msdn.microsoft.com/library/e...h_microsoft_windows_media_encoder_7__dthv.asp) as it can also capture the live screen or an active window.

We didnt choose this solution due to lack of network and cpu resource available to handle the capture & file stream, but it is at least worth a look.
In the end we reduced the functionality of the remote 'view' to only support the text our program displays on it. So we can just send that text over as string to the remote pc and a separate applicatoin shows it on the remote pc. No need for streaming complete windows/screens that way ;)
 
I was always wondering how microsoft's remote desktop does it... Does it send compressed frames coupled with some change detection mechanism or what?
 
i am not sure what you are wondering about microsoft.
if it's about remote desktop, it's only a client of the so called 'remote desktop protocol'.
you can connect to the windows terminal server from linux using one built-in program called rdesktop.

IcingDeath said:
I was always wondering how microsoft's remote desktop does it... Does it send compressed frames coupled with some change detection mechanism or what?
 
hey its not like that....

microsoft remote desktop .. i can tell u how it works...

it will interrupt the video signals which are sent to the monitor and convert it in to a video stream and transer it over a network... i dont know how to do it so i gave one suggestion of sending the desktop view of the client in a form of a picture ...

tell me if u have some other idea...
 
I once made a program where I could connect to it at first with Telnet and later on with my own client. Among other things that program could capture the remote screen and send it over to the client. What I noticed is that firstly, each 'frame' was quite big in size if I wanted not to distort it by adding better compression (I think I was using jpeg @ 100% quality) and secondly that when I had the other machine running a game it would sometimes send me the same screen two or three times without changes (as if the screen had a buffer that changed on a big interval, and the capture api took the picture from there rather than the actual screen contents). I think that u should use some sort of change detection thing for your app. Have you noticed that in remote desktop, the client receives only parts of the screen that change (aka invalidated). There must be some API call (or global hook) to get the screen refresh event (and rectangle coordinates of the area that is being painted at the moment).
 
Oh and how about the technique (I think its called vector graphics) where instead of describing an image one pixel at a time (thus consuming a lot of bandwidth) you describe an image as a series of shapes (like this is a square filled with red color etc.).
 
Plus, after my recent expirience with MS Video Encoder (the thing that encodes a video stream and sends it to a Windows Media Server), I learned that encoding actually drains out a lot of cpu power ( It had my P4 3.2 multithreaded server using up half of its CPU power just to encode a 640x480 stram) so I cant imagine how you would be able to encode say 20 fps of at least 800x600 without paralyzing the server machine. By the way, i think VNC is the one that intercepts the video stream from the graphics card because it wont work without one, while remote desktop always works!

I think I am done :) I wrote an essay lol
 
Back
Top