之前看到一个人用Socket写的远程控制器,感觉还不错。但是总觉得Socket编程比较
麻烦。所以,决定自己在空余时间用RMI来写一个同样功能的远程控制器!
网络上对于JAVA实现远程控制的资料也比较多,感兴趣的话,你也可以看看!我这里简
单的介绍一下实现原理:
1.对于该远程控制器而言,控制端与被控制端都集成在一个程序中(类似QQ远程控制)
2.控制端通过RMI调用服务端(被控制端)的远程接口,以截屏的方式传输数据至控制端
当然,另外一种更先进的方式是只传递屏幕变化区域的数据至控制端,再由控制端来进
行图像的合成,这样传输的数据量就减少了很多。
3.控制端通过RMI接口传递相关命令(鼠标、键盘等命令),被控制端接收并通过Robot
类来执行相关的命令。
这里需要注意的是:RMI是不支持BufferedImage的直接传输,会报没有序列化的异常,此时,我们可以通过传输BufferedImage对应的数据数组。再在控制端对BufferedImage的数据进行合成显示。
界面预览:
[img]http://jacky68147527.iteye.com/upload/picture/pic/31119/251576d1-c2d0-3fab-a706-2c2cf8bb3d0e.jpg[/img]
[img]http://jacky68147527.iteye.com/upload/picture/pic/31125/688bf5a4-1588-35ec-b776-7c23c3c55819.jpg[/img]
源码和jar文件都在附件中
麻烦。所以,决定自己在空余时间用RMI来写一个同样功能的远程控制器!
网络上对于JAVA实现远程控制的资料也比较多,感兴趣的话,你也可以看看!我这里简
单的介绍一下实现原理:
1.对于该远程控制器而言,控制端与被控制端都集成在一个程序中(类似QQ远程控制)
2.控制端通过RMI调用服务端(被控制端)的远程接口,以截屏的方式传输数据至控制端
当然,另外一种更先进的方式是只传递屏幕变化区域的数据至控制端,再由控制端来进
行图像的合成,这样传输的数据量就减少了很多。
3.控制端通过RMI接口传递相关命令(鼠标、键盘等命令),被控制端接收并通过Robot
类来执行相关的命令。
这里需要注意的是:RMI是不支持BufferedImage的直接传输,会报没有序列化的异常,此时,我们可以通过传输BufferedImage对应的数据数组。再在控制端对BufferedImage的数据进行合成显示。
界面预览:
[img]http://jacky68147527.iteye.com/upload/picture/pic/31119/251576d1-c2d0-3fab-a706-2c2cf8bb3d0e.jpg[/img]
[img]http://jacky68147527.iteye.com/upload/picture/pic/31125/688bf5a4-1588-35ec-b776-7c23c3c55819.jpg[/img]
源码和jar文件都在附件中