什么是远程控制技术?
远程控制是在网络上由一台电脑(主控端Remote/客户端)远距离去控制另一台电脑(被控端Host/服务器端)的技术。电脑中的远程控制技术,始于DOS时代,只不过当时由于技术上没有什么大的变化,网络不发达,市场没有更高的要求,所以远程控制技术没有引起更多人的注意。
不过,随着网络技术的发展,目前很多远程控制软件提供通过Web页面以Java技术来控制远程电脑,这样可以实现不同操作系统下的远程控制,例如数技通科技有限公司在去年就推出了全球第一套基于中文JAVA的跨平台远程控制软件――易控。
如果有想学习java的同学,可来我们的java技术学习QQ群:928204055,免费送整套系统的java视频教程!我每晚上8点还会在群内直播讲解Java知识,欢迎大家前来学习哦~下面是部分资料截图:
用Java实现远程控制技术
java自带的java.net.和java.awt.robot.的混合可以用于实现通过网络对另一台计算机的远程控制,其中包括控制远程计算机鼠标的动作和键盘的输入,以及实时获得远程计算机屏幕的图像。本文将用简洁的语言和由浅入深的逻辑,教大家如何掌握这个技术。
首先先看一下效果图:
远程端计算机界面:
控制端计算机界面:
控制端输入:
远程端输入:
远程控制的技术思路:
首先两台计算机通过java.net的Socket来进行连接。
一端先打开一个ServerSocket,然后另外一端用socket进行连接。
服务器端
设置一个ServerSocket,并且初始化需要用到的输入输出流:
客户机端
用socket去连接服务器,并且初始化输入输出流:
这样两台计算机就链接在一起并且可以通过流来交换数据了
接下来大家可以想一想,要实现远程控制的两台计算机需要交换什么信息呢?首先被控制端需要不断向控制端提供截取的屏幕图像(这个我们将会用java.awt.robot来实现),然后鼠标和键盘根据控制端传来的事件(inputEvent)来做出相同的操作(用robot来实现)。然后控制端当然首先要接收被控制端传来的图像并且反映到一个面板上(pane),然后监听本机上键盘鼠标的动作再传给被控制端的主机(我们通过在面板pane上设置一个监听器listener来实现)
这里遇到的一个问题就是用于传送的图片无论是用image还是用bufferedImage都是不可串行化的。所以不能用I/OStream进行传送,所以为了解决这个问题,我们需要把图像数据封装在一个类里面并implements Serializable接口
图像类如下:
这样就可以实现图像通过ObjectInputStream和ObjectOutputStream的串行化传播了
了解了以上基础之后首先我们要完成控制端的UI界面设置,图片接收,和键盘鼠标动作监听:
首先是设置接收图片:
这样接收了来自ObjectInputStream的Message类之后就可以把图片重新设置到面板pane的大小然后展示出来
下一步就是设置面板属性和监听器:
监听器:
以上就完成了控制端。
接下来我们将构建被控制端:
被控制端需要使用robot来截图并发送,而且需要写一个方法来对接收到的InputEvent进行反应
首先是截图和发送:
注意到这段代码中使用了D:\OUT\目录作为临时文件的存放地方,读者使用这个代码的时候需要自己设置临时文档的存放
然后实现robot对于接收到的InputEvent指令进行操作:
欢迎关注胖胖爱Java的简书号,可视化学习java,每天更新文章,让Java学习更加简单。
声明:本文内容来源于网络,如有侵权请联系删除
网友评论