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 ...
Confira outros conteúdos:
Perguntas frequentes
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.