今天给大家分享一个通过易语言实现的远程桌面监控例子,主要使用了易语言自带的远程服务支持库中的请求客户端和远程服务两个类。基本原理是客户端利用时钟组件不间断的向服务器端发送截图,以实现远程实时显示客户端桌面,其中时钟周期决定了显示的刷新率。 首先将源码中的服务端编译成exe可执行文件,可以在本机电脑直接运行服务端,并且点击启动服务器按钮。服务端运行截图:

启动服务端后,可以在本机电脑直接运行客户端,客户端要输入服务端显示的IP地址以及端口号连接到服务端。客户端连接知识点:

如果是本机电脑测试,服务端也运行在本机电脑,客户端直接输入本地IP/内网IP和端口即可连接。

如果客户端要发给其他用户测试,本机电脑需要有独立公网IP才可以。(家庭宽带都是动态拨号IP,并且还隔了一层路由器,客户端发给其他网络的用户测试肯定是连接不上的。但是有一种方法是通过路由器端口转发来实现,在这里我就不展开来讲了)

服务端如果直接运行在云服务器上,客户端就可以直接输入外网IP进行连接。

客户端运行截图:

客户端通过输入对应IP和端口号并点击连接服务器,如果端口号和IP地址没有问题的话,就会显示连接成功,此时客户端即可点击启动按钮就可以实时发送截图到服务端,运行演示视频

制作远程控制软件思路

如果要实现像向日葵、ToDesk这种远程控制软件的,单纯是通过一个客户端和服务端是完全不够的。因为前文我们讲到普通家庭带宽网络是没有固定的公网IP,因此服务端软件无法运行在个人电脑上,所以想要实现真正的远程控制软件,必须要分别开发服务器端、客户端(被控端)、控制端,当然被控端和控制端可以整合在同一个软件中。其中服务器端要运行在有公网固定IP的云服务器或者物理服务器上,服务器端主要负责数据的中转以及调度,具体实现方法如下:

使画面变流畅的一些思路

通过这个易语言的例子,大家可以发现服务端显示的画面略有卡顿,这是因为我们设置了时间周期是300毫秒,如果想要正常的一个不卡顿的效果,理论上可以将时间周期设置成30毫秒,这样刷新率快了,服务端显示的画面就会非常流畅。但是这样有一个问题会出现,那就是我们客户端的截图图片没有经过任何压缩处理,图片质量会很大,将会导致30毫秒内数据发送不完,同样会造成卡顿,具体解决思路如下:

客户端截图时经过压缩图片以及调整图片大小后再发送,服务端收到数据和解压缩再显示。

客户端开始实时发送截图前,可以将客户端的桌面背景置为纯黑色也会减少一些截图的图片大小。(向日葵、ToDesk也有这种方案)

自己建立一种通信协议,比如客户端可以通过分批发送数据,例如客户端屏幕分辨率为1920*1080,客户端可以把这个屏幕分成N等份进行截图依次发送(以此来减少单个数据包的大小),然后服务端依次收到图片数据进行拼接显示。

远程控制的一些思路

远程控制无非就是实现控制端除了可以实时显示被控端桌面的画面以外,还可以进行鼠标移动和点击操作,以及键盘映射操作。其实原理也很简单,具体的一些思路如下:

控制端将鼠标移动到被控端桌面画面窗口时,通过控制端窗口大小以及图片像素、还有被控端的屏幕分辨率进行相应的像素转换,并且控制端将转换后的鼠标坐标数据发送给被控端,即可做到控制端鼠标位置与被控端鼠标位置一致,当控制端鼠标点击后再把点击命令发送给被控端执行即可。

键盘映射就比较简单了,当被控端进入远程控制模式的时候,控制端按下对应的键就发送数据给被控端执行模拟按键即可。

好了,以上就是本片文章的全部内容,本文分享的源码以及一些思路只供学习交流,切勿用作损害他人利用以及非法行为。