Pregunta

Como parte de una herramienta de soporte al cliente, estoy queriendo proporcionar alguna funcionalidad para poder solicitar para ver / controlar a distancia una sesión de escritorio. Hay un montón de maneras de conseguir una captura de pantalla y luego transmitirlo, pero estoy con ganas de descubrir, en particular, por qué el RDP (Remote Desktop / Terminal Services vs. experiencia VNC es tan diferente. Estoy usando RDP vs . VNC sólo porque parecen utilizar drásticamente diferentes métodos para transmitir la pantalla para el cliente.

Si tuviera que adivinar, RDP aparece para transmitir bloques de gráficos de mapa de bits (digamos 100x100px) con el fin de construir una imagen completa (que puede ser bastante lento) pero parece transferir formas normales pintadas / llena, o la fuente de dibujo a la cliente de forma extremadamente rápida. VNC parece tomar instantáneas de la pantalla gigante, comparar una imagen anterior y corriente a los cambios en el cliente.

Siento que RDP es una forma mucho más alta calidad y el protocolo suave que cualquier otra cosa por ahí, por lo que lo que la técnica tampoco utiliza para lograr esto?

EDITAR-Solo para aclarar, estoy pidiendo acerca de estas técnicas gráficas específicamente como un método de programación protocolo de flujo - no para qué producto / tecnología existente a utilizar para resolver este requisito de negocio

.
¿Fue útil?

Solución

Como descubriste, ambos son bastante diferentes en su forma de flujo de cambio. El protocolo RDP de MS es y extensión de un ITU estándar ( T.128) que se pueden comprar en línea.

RDP implementa un montón de técnicas de ahorro de ancho de banda que se complementan entre sí y, lo hacen muy eficiente a lo largo del ancho de banda bajo.

VNC en el otro lado tiene técnicas de compresión muy básicas: se enviará bloques de mapa de bits que han cambiado y utilizará tipos básicos de compresión, de RLE a jpeg para transmitir los bloques de manera eficiente
. Por desgracia, es todavía muy derrochador más de ancho de banda bajo.

VNC, básicamente, no tiene conocimiento de las primitivas gráficas de base utilizados para construir la pantalla. Eso hace que sea fácil de usar en cualquier máquina, ya que sólo monitorea los cambios en el mapa de bits de pantalla.
RDP en los otros ganchos de mano más profundamente en la API de Windows y es capaz de optimizar su flujo basado en la cantidad mínima de información necesaria para generar la misma actualización en el cliente.

Si desea integrar funcionalidades de escritorio remoto, que tiene un par de opciones:

  • para RDP puede utilizar el ActiveX utilizado para funcionalidades remotas web. Es posible que desee echar un vistazo a un envoltorio para integrarlo en su propio software.
    Si desea obtener más profundamente en esto no hay código fuente disponible para el linux rdesktop cliente que se conectan a las máquinas de Windows a través de RDP.

  • para VNC hay una serie de implementaciones de código abierto.
    El copiloto de FogCreek utiliza en realidad uno y se puede obtener su ya que está construido en TightVNC

También hay una serie de proyectos sobre CodeProject sobre RDP y VNC .

Otros consejos

Como dijo Renaud, VNC se limita a enviar más de mapa de bits cambia bloque por bloque sin ningún conocimiento de lo que es el contenido. RDP es mucho más inteligente.

Se puede extraer exactamente lo que hace RDP de estas dos especificaciones:

nivel del Protocolo: http://msdn.microsoft.com/en-us /library/cc240445(PROT.10).aspx

Nivel de Gráficos: http://msdn.microsoft.com/en-us /library/cc241537(PROT.10).aspx

Creo mayores ganancias de RDP provienen de:

  • Almacenamiento en caché: El cliente puede almacenar una gran cantidad de bloques que antes visto y el servidor puede decirle al cliente cómo usarlos. También estos son persistente por lo que cuando un cliente se conecta a un servidor que ya ha estado en que puede anunciar lo que tiene bloques en el disco. Muy útil cuando las ventanas son movidos. También muchas partes de las ventanas, como la barra de título son los mismos.

  • Línea / Bloque dibujo. Como has adivinado RDP tiene operaciones en línea, poli y dibujo rect. Con el dibujo de las ventanas estos vienen en uso mucho.

  • dibujo de la fuente. RDP tiene una forma de enviar más de gylphs para las fuentes y decirle al cliente para hacerlos.

  • Cursor prestación. Los iconos de cursor se envían como glifos. VNC utiliza simplemente un punto

Esos son los grandes que vienen a la mente. Echa un vistazo a la sección 2.2.7 conjuntos de capacidades de la especificación de protocolo para la lista completa de funciones de dibujo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top