远程桌面控制原理是啥,符合那些条件才可以实现?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了远程桌面控制原理是啥,符合那些条件才可以实现?相关的知识,希望对你有一定的参考价值。
原理很简单,优化很复杂;就是抓屏,发送,至少要优化一下,每次只发送不同的地方;
设计条件如下:
① 【主机】端的界面位图传输功能使用的是《Visual C++C6.0技术内幕第五版》源码ex34a的Blocksock,这个TCP套接字类非常好用,因为带了“超时取消”功能,建议在工程中多多使用这样的类;
② 【主机】端的桌面位图捕获,见CopyBitmap、ToMemory两个函数,分为实现了获取桌面HBITMAP和将这个HBITMAP完整的按bitmap格式保存到内存中。ToMemory的第三个参数为像素颜色,可选择32、24、16、8,自己试一试,会占用不同的内存容量,建议取8,这样一幅800×600的位图不压缩时占用480K字节多;
③ 【主机】端的位图压缩,采用了开源项目miniLZO,这个开源压缩项目非常好用。经验证,一般界面下的位图,压缩后压缩比可以达到90%而且速度超快。这些比例数字都在程序中显示;
④ 鼠标键盘控制信息采用了低级钩子的方法获取,注意,低级钩子它们并不需要单独写DLL。(VC6捕获鼠标事件(移动、单击等)的一些总结(MFC消息、DriectInput、钩子)),说明了为什么要使用低级钩子来换取;
⑤ 鼠标键盘的控制信息传输采用了UDP,在Lan.cpp中实现;
⑥ 为了提高程序的健壮性,使用毫秒级的多媒体测时函数,测量发送、接收花费的时间,做到心中有数;
⑦ 【远程终端】把收到的压缩位图,解压后,使用函数GetHBmp得到HBIMAP,并使用一个位图控件做显示。
使用时,先将每个程序的IP地址设一下(每个程序有两处IP需要设,IP指的是都是对方的IP地址),先运行【远程终端】,再运行【主机】程序。 参考技术A 1。你和对方机器建立一个Socket链接(协议估计是tcp/ip这种有状态协议)
2。在本地虚拟一个对方的系统
3。对方系统会在这个socket链接上实时给你发送目前他系统状态数据
4.你收到数据,本地虚拟的系统通过这个数据还原对方系统操作(包括图象和操作等等)
5。你在本地操作这个虚拟的操作系统。又会发送数据命令到对方机器,
6。对方机器接收指令,通过Hook (底层钩子),等操作系统,
7。然后重复流程3,循环反复
其中应用的技术
1。SOCKET
2.Hook钩子
3.虚拟技术(window虚拟不了linux,所以也就无法远程,欧linux支持SOCKET吗?不得而知)
4。传输(需要用增量传输,没研究过)
认为是不停的整屏传输截图的,是想当然了,呵呵,除非系统疯了(即使还原了图象,操作也无法还原) 参考技术B 1.利用系统自带的3389端口和远程桌面,被控制机器必需开启相关服务和3389端口,当然也可以改成其他端口;2.安装第三方软件,QQ,Radmin等都可以,QQ等通讯软件需要被控制机器发出远程协助并申请控制请求才可以操控,而Radmin这类可以在被控制机器无人的情况下同步操作,如果想用的话推荐使用这个,安装简易,控制方面,还有文件传输功能等。3.通过其他黑客软件实现,也属于第三方软件,这类软件比较多,各大黑客网站都有。只要是联网的机器,开启了相关服务和端口就可以实现远程控制,端口不是固定的,看各人设置。 参考技术C 远程控制是说有控制权限的人可以远程控制一些人的电脑,从而实现远距离操作别人的电脑。条件是被控制的人应该给别人相应的控制权限,这些权限要双方协商好了 参考技术D 用安卓的网灵移动办公软件,可以通过手机,平板,甚至网页控制
spring ioc aop 的原理是啥啊,面试时我怎么回答才好呢?说说面试技巧好吗
IOC:控制反转也叫依赖注入。利用了工厂模式将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类(假设这个类名是A),分配的方法就是调用A的setter方法来注入,而不需要你在A里面new这些bean了。
注意:面试的时候,如果有条件,画图,这样更加显得你懂了
AOP:面向切面编程。(Aspect-Oriented Programming)
AOP可以说是对OOP的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。
将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。
实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码
简单点解释,比方说你想在你的biz层所有类中都加上一个打印‘你好’的功能这你经可以用aop思想来做,你先写个类写个方法,方法经实现打印‘你好’让后你Ioc这个类 ref=“biz.*”让每个类都注入。 参考技术A spring的IoC容器是spring的核心,spring AOP是spring框架的重要组成部分。
在传统的程序设计中,当调用者需要被调用者的协助时,通常由调用者来创建被调用者的实例。但在spring里创建被调用者的工作不再由调用者来完成,因此控制反转(IoC);创建被调用者实例的工作通常由spring容器来完成,然后注入调用者,因此也被称为依赖注入(DI),依赖注入和控制反转是同一个概念。
面向方面编程(AOP)是以另一个角度来考虑程序结构,通过分析程序结构的关注点来完善面向对象编程(OOP)。OOP将应用程序分解成各个层次的对象,而AOP将程序分解成多个切面。spring AOP 只实现了方法级别的连接点,在J2EE应用中,AOP拦截到方法级别的操作就已经足够。在spring中,未来使IoC方便地使用健壮、灵活的企业服务,需要利用spring AOP实现为IoC和企业服务之间建立联系。 参考技术B 我给你来个权威的,你答到这下面就基本不问了。
IOC(反转控制):对成员变量的赋值的控制权从代码中反转到配置文件中。
AOP:Aspect(切面) Oriented(面向) Programming(编程),面向切面编程。
差不多就够了,再看就是Spring的事务处理,基本就这些。 参考技术C 以前有人问过这类问题,在百度文库里面有的。你可以参考一下。最主要的是你自己的看法。所谓的原理也是人总结出来的。我相信,你如果在面试的时候将自己所理解的原理讲出来一定会加分的。祝你好运。面试官并不一定要听你把那个原理背出来,背书谁都会,主要还是想看看你的想法,明白了吗。
参考技术D 从字面理解和回答可以让自己条理清晰讲出,也可以让听者条理清楚地理解。ioc控制反转,说的是一种操作方式,或者说是一种思想的概括,谁控制谁啦?怎么就反转了啦?通过自己对spring的运用才能知道,spring容器控制了所有的bean,不用spring以前,一个bean要依赖另一个bean就在这个bean里初始化另一个bean才能使用另一个bean,是这个bean在控制另一个bean。现在spring容器控制所有的bean,并把另一个bean注入给这个bean。反转:是指控制bean的权利转移给容器了。aop:面向切面编程。先了解切面,什么是我们所谓的切面?我们在什么地方切面?
当然,我们谈得是在方法上的切面,那么方法上都会有哪些切面呢?经过我们的学习,我们可以在方法的前面、后面、中间。*_* 这样有点笼统。具体是调用方法之前、调用方法返回之后、调用方法返回之前,调用方法出现异常时等等,在这些地方都可以插入自己相干的事儿,这些事儿就是切面了。下一步,我们如何去插入我们的这些事儿呢?代理,动态代理,不管是针对接口代理,还是生成其子类代理,这些代理技术就是解决了怎么样插入切面的问题,你还有其他方式来解决如何插入切面问题吗?spring解决了这个问题,我们所要做的只是编写切面,配置切面的切入点、切面类型等……
以上是关于远程桌面控制原理是啥,符合那些条件才可以实现?的主要内容,如果未能解决你的问题,请参考以下文章