Протокол для кодирования данных для веб <-> настольного приложения - PullRequest
0 голосов
/ 14 июля 2009

Я планирую разработать систему удаленного рабочего стола, состоящую из:

  1. Настольное приложение, которое может захватывать и отображать экран
  2. Сервер, который устанавливает одноранговые соединения, использует методы обхода STUN / TURN NAT для одноранговых
  3. Веб-приложение (Java-апплет или Silverlight), которое запускается из браузера и позволяет пользователю видеть / контролировать удаленный рабочий стол.

Моя точка зрения - какой протокол кодировки будет лучшим для этой системы? Я отложил VNC, который является двоичным и недостаточным - мне нужно больше функциональности для т.е. NAT обход. Он должен быть легко разработан на C ++ для настольных компьютеров и серверов, а также на Java / .NET для веб-приложений. Я думал о XML по HTTP (S), но мне интересно, как я могу эффективно кодировать двоичные данные, поскольку должно быть значительное количество передаваемых двоичных данных (захваченные изображения рабочего стола, закодированные как bmp / ​​jpgs и т. Д.).

Любые намеки?

Спасибо

1 Ответ

1 голос
/ 14 июля 2009

Я думаю, что вы смешиваете некоторые понятия. VNC делает то, что вы пытаетесь сделать, и единственное, чего ему не хватает, - это NAT Traversal. Но NAT Traversal не отвечает ЛЮБОМУ протоколу (насколько я знаю). Тем не менее, ничто не мешает вам создать NAT Traversal до того, как соединения VNC будут включены.

Использование XML Over HTTP (S) для обхода брандмауэров - это просто огромное излишество. Основная проблема этого подхода заключается в том, что TCP-соединение не подходит для приложений реального времени, таких как передача видео, и данные XML не являются двоичными! Я думаю, что при таком подходе ваше приложение-убийца никогда не запустится.

Зачем изобретать велосипед и не использовать RTP / RTCP + Upp Hole Punching? Существует множество (не читаемых) документов по этой теме, и, насколько я знаю, Java-апплеты могут отправлять / получать пакеты UDP. Единственное, что вам нужно будет реализовать - это кодирование видео / аудио / событий (то, что VNC уже делает, протокол RFB!)

Надеюсь, это поможет.

...