【静默等候,这原是好的】——耶利米哀歌3:26 感激G
---------------------------------------------------------
附件如下:
话不多说,先给出一张截图
这几天在给自己的通信项目不断的添加功能,今天 “算是” 实现了一个远程监控
感谢胡老师的帮助~
好了,先说一下
实现原理:
1.需要有被监视端和监视端两个类
2.被监视端启动一个线程 ,来截取屏幕的图片并转化为字节数组传给监视端
3.监视端启动一个线程,来接受字节数组,并转化为图片显示在窗口上
其中需要用到【ImageIO】和【Robot】这两个类
代码实例:
【被监控端】截取屏幕的图片
// 创建Robot对象
Robot robot = new Robot();
// 截取屏幕
BufferedImage bfImg = robot.createScreenCapture(new Rectangle(
100, 100, 400, 400));
【被监控端】保存图片
// 创建文件输出流对象
File file = new File("temp.jpg");
OutputStream fous = new FileOutputStream(file);
ImageIO.write(bfImg, "jpg", fous);
fous.close();
System.out.println("已完成截图");
fous.close();
【被监控端】发送信息
InputStream fins = new FileInputStream(file);
int len = fins.available();
byte[] data = new byte[len];
fins.read(data);
fins.close();
System.out.println("-----------len = "+len);
//将文件长度写入
dous.writeInt(len);
// 将字节数组写入
dous.write(data);
接下来就是监控端的工作了
【监控端】读取消息
//读取文件长度
int len = dins.readInt();
byte[] data = new byte[len];
//读取文件内容
dins.read(data);
【监控端】将图片显示在窗口上
//将读取出的信息转化为图片
ImageIcon img = new ImageIcon(Toolkit.getDefaultToolkit().createImage(data));
//将图片显示在监视者窗口上
Graphics g = cs.getGraphics();
g.drawImage(img.getImage(), 0, 0, 300, 300, null);
实现思路见另一篇博客——