一般的远程监控软件都是用c或者c++等语言开发的,而使用java如何来实现相同的功能呢。
首先我们先介绍一下一个简单的远程监控程序的实现原理。
功能一,远程屏幕监视
(1)
必须要有监控端与被监控端,而且程序保持启动。
(2) 被监控端获取本机的屏幕截屏发图给监控端。
(3)
监控端在本地窗口中显示被监控端发送过来的图像。
(4) (2)(3)步骤重复执行,这时在监控端即可实时监视到被监控端的桌面操作了。
功能二,远程控制
(1) 必须要有监控端与被监控端,而且程序保持启动。
(2) 在监控端监视窗体上执行鼠标点击事件。
(3) 记录步骤 (2)中的鼠标点击的坐标,及键值发送到被监控端。
(4) 被监控接受鼠标坐标,及键值,然后再本地屏幕上模拟同样的点击动作。
OK,现在看下具体的java与语言是如何实现上述功能的。
使用java语言要实现截屏的功能就要依靠java类库中的一个有趣的类
java.awt.Robot类【俗称Java机器人】了
功能一,远程屏幕监视
//『客户端』抓取屏幕快照GuiCamera.java
//『监控端』接受图像,Snap.java
功能二,远程控制
『监控端』记录鼠标操作Snap.java
『监控端』发送坐标Snap.java
public void run() {
out.println(eventType + "," + x + "," + y);
out.flush();
}
『客户端』获取鼠标坐标后,在本机相同坐标位置模拟一个鼠标点击操作 Coop.java
public void run() {
while
(flag) {
try
{
String s =
in.readLine();
decode(s);
switch (method)
{
//这里的man实际也是Robot的一个实例。
case
1:
man.mouseMove(x,
y);
break;
case
2:
man.mouseMove(x,
y);
man.mousePress(InputEvent.BUTTON1_MASK);
man.mouseRelease(InputEvent.BUTTON1_MASK);
break;
case
3:
man.mousePress(InputEvent.BUTTON1_MASK);
break;
case
4:
man.mouseRelease(InputEvent.BUTTON1_MASK);
break;
default:
break;
}
}
catch (IOException exe)
{
ThreadInfo.CoopIsLive=false;
flag=false;
exe.printStackTrace();
}
}
}
public void run() {
while (flag) {
try {
String s = in.readLine();
decode(s);
switch (method) {
//这里的man实际也是Robot的一个实例。
case 1:
man.mouseMove(x, y);
break;
case 2:
man.mouseMove(x, y);
man.mousePress(InputEvent.BUTTON1_MASK);
man.mouseRelease(InputEvent.BUTTON1_MASK);
break;
case 3:
man.mousePress(InputEvent.BUTTON1_MASK);
break;
case 4:
man.mouseRelease(InputEvent.BUTTON1_MASK);
break;
default:
break;
}
} catch (IOException exe) {
ThreadInfo.CoopIsLive=false;
flag=false;
exe.printStackTrace();
}
}
}
代码的部分就介绍到这里,由于java语言的一些限制,本实例仅作为演示。有感兴趣的朋友可以下载附件中的程序做进一步参考。 java远程监控.rar (224.7 KB)
原帖地址 http://www.javaeye.com/topic/200963
利用java实现一个简单的远程监控程序,布布扣,bubuko.com
原文:http://www.cnblogs.com/myfreefield/p/3782205.html