前言

一般远程就直接用windows自带的,配置好动态IP花生壳,在任何地方都可以连回机子。最近项目里遇到这么个情况,需要快速接入远程控制功能,客户机的IP每次都会变,并且都是在外网,这样,就必须使用带有中转服务器的远程控制,网上查了一下有TightVNC和UltraVNC两个比较好的开源远程控制项目。

可惜TightVNC目前中转服务器端还在开发,下个版本可能才有。

所以果断选择使用UltraVNC!

介绍

VNC(Virtual Network Computing),为一种使用RFB协定的屏幕画面分享及远端操作软件。此软件借由网络,可传送键盘与鼠标的动作及即时的屏幕画面。

VNC与操作系统无关,因此可跨平台使用,例如可用Windows连线到某Linux的电脑,反之亦同。甚至在没有安装用户端程式的电脑中,只要有支援JAVA的浏览器,也可使用。

UltraVNC:加入了TightVNC的部份程式及加强效能的图型映射驱动程式,并结合Active Directory及NTLM的帐号密码认证,但仅有Windows版本

地址:http://www.uvnc.com/

UltraVNC包括客户端与服务端,请求协助的一方称为被协助方,或者(远程协助)服务端;响应的一方称这里命名被协助方为Cv,而协助方命名为Cs,中转服务器为Sr。为协助方,或者(远程协助)客户端,

Repeater为中转服务器Sr,当Server连接Viewer是,通过Sr相互转发数据。对Cs的监控端口为5500,Cv的监控端口为5900,当然5500、5900都是vnc的默认端口,这样会引起其他一些VNC软件的冲突,所以Cs和Cv监控端口都需要修改。

原理

一般连接模式包括两种

1) 协助用户Cv和请求协助用户Cs1在同一局域网内,这时Cv与Cs1可以直接通过IP地址进行TCP通信;

2) 协助用户Cv和请求协助用户Cs2不在同一局域网内,这时Cv与Cs2只能通过中转服务器相互转发数据进行通信。

其中2)中repeater包括两种模式,如图所示,第一种是repeater在内网,第二种是repeater在外网,我们主要介绍第二种。

官方文档也介绍的比较详细了,相关信息可以直接查看。

实现

统一下载地址:http://www.uvnc.com/downloads/ultravnc/111-download-ultravnc-1205.html

注意:实现过程中都使用默配置

1、找一台公网服务器安装运行repeater

2、在客户机安装UltraVNC,设置为windows服务,使其每次开机都启动。

3、配置客户机

输入:-id:54 -autoreconnect -connect 12.34.56.78

其中54改为你自己设置的机子编号,12.34.56.78改为repeater所在的地址,这样,每次启动都会运行命令,使用设置的id号连接repeater了。

当然也可以手动连接,右键托盘图标->add new client

4、使用客户端通过repeater直接连接服务端。

这样,就可以直接在(客户端)协助方自己通过设置好的id,访问(服务端)被协助方了,再也不用担心ip的问题。

但是这也有一个问题:

repeater其实也相当于一个服务端,只不过自动接受了客户端发过来的连接请求,当真正使用客户端通过repeater连接服务端的时候,其实就相当于通过repeater这个服务端回连客户端,这个过程就不需要登录密码,所以如果其他人知道了repeater的地址和ID号,那么也可以连接上客户端了,安全性有待提高!

自从用了TeamViewer,其他远程工具都是浮云……

基于UltraVNC实现客户端远程控制的更多相关文章

  1. 基于GTK+3 开发远程控制管理软件(C语言实现)系列 一 开篇

    近期趁公司没项目来,想学习一下C和GTK+3 ,顺道再学习一下Linux下有关网络编程方面的知识. 一.学习知识: 1.C基本语法 2.GTK+3 API学习 GUI相关知识学习 3.Glade使用及 ...

  2. 基于SAAJ的客户端

    概述 SAAJ - SOAP with Attachments API for JAVA 结构图如下: 正文 1. 如何获取soap请求的关键参数 关键的参数有四个: xmlns - xml命名空间如 ...

  3. C#基于RabbitMQ实现客户端之间消息通讯实战演练

    一.背景介绍和描述 MQ消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步RPC的主要手段之一.何时需要消息队列?当你需要使用 ...

  4. 基于UDP的客户端和服务器端的代码设计

    实验平台 linux 实验内容 编写UDP服务器和客户端程序,客户端发送消息,服务器接收消息,并打印客户端的IP地址和端口号. 实验原理 UDP是无需连接的通信,其主要实现过程如下: 同样,我们可以按 ...

  5. 基于MQTT协议实现远程控制的"智能"车

    智能,但不完全智能 虽然我不觉得这玩意儿有啥智能的,但都这么叫就跟着叫喽. 时隔好几天才写的 其实在写这篇博文的时候我已经在做升级了,并且已经到了中后期阶段了. 主要是业余时间做着玩,看时间了. 规格 ...

  6. 基于Git项目管理客户端SourceTree的免注册安装及远程连接方法

    作为程序员,不可避免的要在github上查询代码,而在企业项目中,为了使得项目好管理需要使用项目管理客户端,所以接下来详细讲解一下基于git的sourceTree在windows系统下的安装及与Git ...

  7. Redis基于Java的客户端SDK收集

    如果要找这类的SDK,第一反应应该直奔官网,找一下看下有什么推荐.先找最权威的回答,找不到再尝试民间方案. 就Redis来说,官方已经提供了一个列表包括市面上绝大多数语言的SDK,可以参考以下网址看J ...

  8. Kafka 幂等生产者和事务生产者特性(讨论基于 kafka-python | confluent-kafka 客户端)

    Kafka 提供了一个消息交付可靠性保障以及精确处理一次语义的实现.通常来说消息队列都提供多种消息语义保证 最多一次 (at most once): 消息可能会丢失,但绝不会被重复发送. 至少一次 ( ...

  9. 基于TCP的客户端、服务器端socket编程

    一.实验目的 理解tcp传输客户端服务器端通信流程 二.实验平台 MAC OS 三.实验内容 编写TCP服务器套接字程序,程序运行时服务器等待客户的连接,一旦连接成功,则显示客户的IP地址.端口号,并 ...

随机推荐

  1. Sencha Touch xtype对应的class

    Sencha Touch 2的有效xtype xtype Class ----------------- --------------------- actionsheet Ext.ActionShe ...

  2. 亚马逊 在线测试题目 amazon

    分析:其实就是求矩形中某一个点到其他点的距离加权最小 方法一: 对每一个点求其到其他点的加权距离,然后比较最小.由于有M*N个点,对每一个点求加权距离是O(M*N)的,所以整体时间复杂度是O(M*M* ...

  3. Using Hooks

    The following code examples demonstrate how to perform the following tasks associated with hooks: In ...

  4. 全面认识JVM技术

    本文向大家描述一下JVM的概念,JVM(Java虚拟机)是可运行Java代码的假想计算机.只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行. J ...

  5. LCIS(m*n) 最长公共上升子序列

    详见:http://wenku.baidu.com/view/3e78f223aaea998fcc220ea0n3的: for(int i=1;i<=n;i++)             for ...

  6. mybatis处理查询map列表属性为null的问题,而导致查询map无该key对象

    1.常规处理方法(数据库以mysql为例) IFNULL(m.last_use_time,) ) ) as last_lat if判断是否为null,设置一个默认值. 2.前台jsp页面处理,判断是否 ...

  7. D&F学数据结构系列——前驱和后继

    前驱和后继 本文所述为二叉排序树的前驱和后继,如果想了解二叉排序树的概念,可以参考我的博文http://www.cnblogs.com/sage-blog/p/3864640.html 给定一个二叉查 ...

  8. 动态调用wcf接口服务

    1.url:http://localhost:8002/名称.svc/basic(.svc结尾) 2.需要引用的命名空间System.ServiceModel 3.调用代码: public class ...

  9. iOS后台如何保持socket长连接和数据传输

    工程中使用tcp长连接来和服务端进行数据传输,在IOS平台上,由于苹果的后台机制,会有以下问题: 当程序退到后台的时候,所有线程被挂起,系统会回收所有的socket资源,那么socket连接就会被关闭 ...

  10. POJ 3525 Most Distant Point from the Sea (半平面交向内推进+二分半径)

    题目链接 题意 : 给你一个多边形,问你里边能够盛的下的最大的圆的半径是多少. 思路 :先二分半径r,半平面交向内推进r.模板题 #include <stdio.h> #include & ...