views:

84

answers:

1

Hello

I'm planning to develop a remote desktop system consisting of:

  1. The desktop application that can grab and display the screen
  2. The server which establishes peer connections, serves STUN/TURN NAT traversal techniques for peer
  3. The web based (either Java applet or Silverlight) application that runs from browser and allows the user to see/control the remote desktop.

My point is - what would be the best encoding protocol for this system? I put off VNC which is binary and not sufficient - I need more functionality for ie. NAT traversal. It must be easily developed in C++ for desktop and server and in Java/.NET for web based app. I was thinking about XML over HTTP(S) but I'm wondering how can I encode binary data efficently since there must be significant amount of binary data transferred (captured desktop images encoded as bmp/jpgs etc).

Any hints?

Thanks

+1  A: 

I think you are mixing some concepts. VNC Does actually what you are trying to do, and the only thing that it lacks, is NAT Traversal. But NAT Traversal is not the responsabily of ANY protocol (as far i know). Neverthless, nothing stops you creating the NAT Traversal before the VNC Connections are on.

Using XML Over HTTP(S) to bypass firewalls is just an tremendous overkill. The main problem with this approach is that TCP Connection is not suited for real time applications like video-transfer, and xml data is not binary! I think that using this approach, your killer app will never launch.

Why reinventing the wheel and not use RTP/RTCP + Udp Hole Punching ? There's tons of (non-readable) documentation on that topic, and as far i know, Java Applets can send/receive UDP Packets. The only thing that you will need to implement is the encoding for video/audio/events (something that VNC already does, the RFB protocol! )

Hope that helps.

Frangossauro