一般的远程监控软件都是用c或者c++等语言开发的,而使用java如何来实现相同的功能呢。
首先我们先介绍一下一个简单的远程监控程序的实现原理。
功能一,远程屏幕监视
(1) 必须要有监控端与被监控端,而且程序保持启动。
(2) 被监控端获取本机的屏幕截屏发图给监控端。
(3) 监控端在本地窗口中显示被监控端发送过来的图像。
(4) (2)(3)步骤重复执行,这时在监控端即可实时监视到被监控端的桌面操作了。
功能二,远程控制
(1) 必须要有监控端与被监控端,而且程序保持启动。
(2) 在监控端监视窗体上执行鼠标点击事件。
(3) 记录步骤 (2)中的鼠标点击的坐标,及键值发送到被监控端。
(4) 被监控接受鼠标坐标,及键值,然后再本地屏幕上模拟同样的点击动作。
OK,现在看下具体的java与语言是如何实现上述功能的。
使用java语言要实现截屏的功能就要依靠java类库中的一个有趣的类
java.awt.Robot类【俗称Java机器人】了
功能一,远程屏幕监视
//『客户端』抓取屏幕快照GuiCamera.java
BufferedImage screenshot =
(new Robot()).createScreenCapture(
new Rectangle(0, 0, (int) size.getWidth(),
(int) size.getHeight()));
BufferedImage screenshot =
(newRobot()).createScreenCapture(
newRectangle(0,0, (int) size.getWidth(),
(int) size.getHeight()));
//『客户端』发送快照 SendThread.java
image=gc.snapShot();
//保存为临时文件
File file=new File("temp.png");
FileOutputStream fileout=new FileOutputStream(file);
ImageIO.write(image,"png",fileout);
fileout.close();
//读取图像
FileInputStream fileIn=new FileInputStream(file);
int len=(int)file.length();
//建立字节数组
byte[] buf=new byte[len];
fileIn.read(buf,0,len);
//发送
out.write(buf,0,len);
out.flush();
//间隔500毫秒
Thread.sleep(500);
image=gc.snapShot();
//保存为临时文件
File file=newFile("temp.png");
FileO