Por que eu devo ler este artigo:A utilização de serviços de compartilhamento de tela e controle remoto é útil em situações onde é preciso automatizar uma tarefa que deve ser realizada diretamente na interface gráfica do sistema operacional. Esta automação pode ser realizada através do envio de comandos (teclas) e eventos do mouse para diversos computadores remotos que tiverem um servidor VNC instalado. Este artigo mostra exemplos de como enviar caracteres e eventos do mouse para um servidor VNC remoto através de uma aplicação cliente desenvolvida em linguagem C#.

A utilização de vários computadores conectados em rede acabou atraindo diversos novos serviços que auxiliam o compartilhamento e acesso a recursos. Um dos serviços mais populares é representado pela categoria de softwares que permite o compartilhamento da tela (screen sharing) e que possibilita o acesso e controle remoto da área de trabalho (desktop) de um computador.

As principais tecnologias para permitir o compartilhamento e acesso remoto à interface gráfica de um sistema operacional trabalham com o conceito de cliente/servidor, onde um computador servidor (o host) executa um serviço que permitirá clientes (clients) remotos acessarem o desktop. O compartilhamento e o acesso remoto são realizados através da transferência da imagem (tela) do host para o cliente e do envio das interações do mouse e teclado no cliente para o servidor.

Dentre os softwares existentes para trabalhar com estas tecnologias podemos destacar o VNC, que é a sigla utilizada para representar as implementações de código livre que se baseiam no uso do protocolo RFB.

A utilização de ferramentas de compartilhamento de desktop permite diversas aplicações, como a possibilidade de suporte remoto e resolução de problemas com o acompanhamento do usuário, facilitar o processo de deploy de componentes em servidores remotos, treinamento de usuários e monitoria de ações. Contudo, tais usos da tecnologia de compartilhamento de tela possuem implicações relevantes para a privacidade e segurança dos usuários.

Baseado nesse contexto, este artigo apresentará como construir uma aplicação console em C# que acessa remotamente um servidor VNC com a biblioteca VNCSharp. Esta aplicação pode ser utilizada para automatizar a execução de tarefas administrativas (aplicação de service pack, atualização de configurações, etc), treinamento de usuários, colaboração, captura de tela e outras.

A partir do projeto de exemplo descrito neste artigo o leitor poderá integrar as bibliotecas de acesso a um servidor VNC e montar suas próprias soluções que envolvam o acesso a computadores remotos através de um cliente VNC que permite o envio de teclas e eventos do mouse.

O VNC e tecnologias de compartilhamento de tela

As tecnologias para o compartilhamento de tela e o acesso remoto já existem há um bom tempo. Contudo, apenas recentemente estas ferramentas começaram a serem utilizadas em larga escala, principalmente devido ao aumento da largura de banda da conexão entre computadores.

Possuir uma largura de banda adequada é necessário para a utilização de tecnologias de compartilhamento de tela, uma vez que é necessário transmitir frequentemente uma grande quantidade de bytes associada à tela do servidor remoto para os clientes. Apesar de existirem técnicas de compactação e redução de informações necessárias para o compartilhamento de tela, ainda hoje esta tecnologia requer uma conexão confiável, constante e adequada entre o cliente e o servidor.

A definição de como a tela do servidor será transmitida para os clientes e como os eventos de mouse e teclado do cliente devem ser transmitidos para o servidor é detalhada no protocolo utilizado. Atualmente existem diversos protocolos empregados por servidores de compartilhamento de tela, como o protocolo RDP (Remote Desktop Connection), utilizado pelo serviço Terminal Services da Microsoft, e o protocolo RFB (Remote Framebuffer), que é empregado nos servidores de código livre representados pela sigla VNC (Virtual Network Connection). Este artigo se concentrará na utilização do VNC devido à facilidade de download, instalação e execução. Também se destaca a possibilidade de criação de clientes VNC graças às bibliotecas de código aberto em C# existentes.

Antes de começarmos a detalhar como vamos criar uma aplicação cliente que acessa remotamente um servidor VNC, é preciso fazer a instalação do servidor e testar a conexão. Dentre as opções gratuitas disponíveis recomenda-se o RealVNC ou o TightVNC (veja na seção Links). Estes dois softwares possuem pacotes para download que contêm tanto o servidor como ferramentas cliente para as plataformas Windows, Mac OS e Linux.

Os leitores que desejarem executar os códigos fontes apresentados neste artigo devem possuir um servidor VNC instalado e configurado. Executar esta instalação é simples e não requer muitos passos, apesar de serem necessários privilégios administrativos no computador e a eventual liberação de portas de comunicação em um firewall.

Uma vez que o servidor já esteja instalado é preciso saber qual é o endereço IP (ou nome do host), a porta utilizada (geralmente é 5900) e definir uma senha para controlar o acesso remoto. O protocolo VNC utiliza o tipo de conexão TCP e, por isso, é necessária uma conexão constante e com uma boa qualidade para que o modo de interação remoto e visualização sejam adequados.

A partir do momento em que o servidor VNC está instalado e com estas informações em mãos (endereço do host, porta e senha), recomenda-se utilizar um segundo computador, ou seja, um computador diferente daquele que possui o servidor VNC, e testar a conexão remota com a ferramenta cliente disponibilizada junto com o RealVNC ou o TightVNC. Uma vez que a conexão esteja estabelecida, pode-se controlar remotamente o computador que possui o servidor VNC instalado e interagir com o sistema operacional como se o usuário estivesse fisicamente em frente ao computador.

Um servidor VNC pode ser executado como um serviço que é executado em background, isto é, sem exigir interação com o usuário. Desta maneira, quando o sistema operacional for in ...

Quer ler esse conteúdo completo? Tenha acesso completo