Java实现远程屏幕监视

本网站用的阿里云ECS,推荐大家用。自己搞个学习研究也不错
远程屏幕监视使得控制方可以在远程主机上监视其它一台机器,其主要实现原理就是将被控制机器的屏幕作为图片传送给监视方,在Java中要实现远程屏幕监视,主要解决以下几个问题即可:
1:将当前屏幕的显示内容捕捉为图片
2:将捕捉的图片发送到远程控制主机
3:远程控制主机接收到在本地显示
4:利用多线程重复上面三步达到实时更新

说起来怎么这么简单啊,今天试着做了一下远程屏幕监视的实验,发现还真不是这么简单的,把我的心得总结出来共享一下,希望对你有用。

将当前屏幕显示内容捕捉为图片

1Robot robot = new Robot();
2//要捕捉的屏幕显示范围,下面以全屏示例说明
3Rectangle rect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
4BufferedImage bm = robot.createScreenCapture(rect);

通过上面几行代码就把屏幕的当前显示内容保存为内存中的BufferedImage对象,这个确实简单.

将捕捉的图片发送到远程控制主机
要达到实时监控,怎么保证发送效率,在网络状况不良好时怎么保证发送时使用带宽
因为要不停地往控制机上发送图片,所以传送的图片不能太大,否则会影响实时性,当网络状况不好时,占用带宽过多则更加会给实时性带来严峻的考验,解决的方法有两个:
1:使用jpg格式的图片进行传输。
jpg是一种支持高度压缩技术的图片格式,它所存储的信息不包含透明度,同等质量的情形下相对来说比png,gif等格式的图片要小很多,当然,文件大小是以图像质量为代价的,如果你一味地追求压缩后的大小,图像质量就会受损了。我在实验中使用大小为28394字节的png图片经过jpg压缩后大小仅剩5815字节(不是PS,整个过程全部使用Java完成)。
2:将用图片生成的字节数据先压缩再传送。
这一步是仁者见仁,智者见智了,有人说没有必要,jgp格式的图片再压缩也小不了多少。确实是这样的,我在实验中把5815字节大小的jpg经过zip压缩后为大小变为5702,有点小作用,实际应用中压缩与否就看你了(压缩其它格式的

未经允许不得转载:演道网 » Java实现远程屏幕监视

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册