利用java实现一个简单的远程监控程序
来源:互联网 发布:sql 试图的意义 编辑:程序博客网 时间:2024/06/06 15:28
一般的远程监控软件都是用c或者c++等语言开发的,而使用java如何来实现相同的功能呢。
首先我们先介绍一下一个简单的远程监控程序的实现原理。
功能一,远程屏幕监视
(1) 必须要有监控端与被监控端,而且程序保持启动。
(2) 被监控端获取本机的屏幕截屏发图给监控端。
(3) 监控端在本地窗口中显示被监控端发送过来的图像。
(4) (2)(3)步骤重复执行,这时在监控端即可实时监视到被监控端的桌面操作了。
功能二,远程控制
(1) 必须要有监控端与被监控端,而且程序保持启动。
(2) 在监控端监视窗体上执行鼠标点击事件。
(3) 记录步骤 (2)中的鼠标点击的坐标,及键值发送到被监控端。
(4) 被监控接受鼠标坐标,及键值,然后再本地屏幕上模拟同样的点击动作。
OK,现在看下具体的java与语言是如何实现上述功能的。
使用java语言要实现截屏的功能就要依靠java类库中的一个有趣的类
java.awt.Robot类【俗称Java机器人】了
功能一,远程屏幕监视
//『客户端』抓取屏幕快照GuiCamera.java
<span style="font-size:14px;"> BufferedImage screenshot = (new Robot()).createScreenCapture( new Rectangle(0, 0, (int) size.getWidth(), (int) size.getHeight()));</span>
//『客户端』发送快照 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);
//『监控端』接受图像,Snap.java
public void run() { while (flag) { byte[] buf = new byte[102400]; try { imgStream = new BufferedInputStream( socket.getInputStream()); imgStream.read(buf); ImageIcon icon = new ImageIcon(Toolkit. getDefaultToolkit(). createImage(buf)); lab.setIcon(icon); File file = new File("1.jpg"); FileOutputStream fileOut = new FileOutputStream(file); fileOut.write(buf); fileOut.close(); repaint(); setVisible(true); System.out.println("读取图象成功!"); } catch (Exception ex) { ex.printStackTrace(); flag = false; } } System.out.println("服务器停止"); }}
功能二,远程控制
『监控端』记录鼠标操作Snap.java
//内部类,主要功能监听鼠标事件。记录坐标。class keyAdapet extends KeyAdapter { //键盘监听适配器 public void keyTyped(KeyEvent e) { if (e.getKeyChar() == 27) { //按ESC键 Object[] options = { "确定", "取消"}; int n = JOptionPane.showOptionDialog(null, "是否退出程序?", "远程监控系统", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, //don't use a custom Icon options, //the titles of buttons options[0]); if (0 == n) { System.exit(0); } } } } public void mouseClicked(MouseEvent e) { System.out.println("双击了鼠标"); int x = e.getX(); int y = e.getY(); if (tempSocket != null) { new CommandMsg("2", tempSocket, x, y).start(); } } public void mousePressed(MouseEvent e) { if (e.BUTTON1 == MouseEvent.BUTTON1) { System.out.println("你按了鼠标左键~~~~~~~~~~~"); int x = e.getX(); int y = e.getY(); if (tempSocket != null) { new CommandMsg("3", tempSocket, x, y).start(); } } } ...... }
『监控端』发送坐标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(); } } }
代码的部分就介绍到这里,由于java语言的一些限制,本实例仅作为演示。有感兴趣的朋友可以下载附件中的程序做进一步参考。java远程监控.rar (224.7 KB)
原帖地址 http://www.javaeye.com/topic/200963
0 0
- 利用java实现一个简单的远程监控程序
- 利用java实现一个简单的远程监控程序
- 利用java实现一个简单的远程监控程序
- 利用java实现一个简单的远程监控程序
- 远程监控程序的实现
- 远程监控程序的实现
- 简单的一个监控程序
- 用java写的远程监控程序
- java 写的屏幕远程监控程序
- 用java写的远程监控程序
- 利用Xpath实现一个简单的登录验证程序
- 一个简单的服务监控程序
- ReadDirectoryChangesW 监控文件夹 (一个简单的监控示例程序)
- C#简单实现的远程命令程序
- C#简单实现的远程命令程序
- C#简单实现的远程命令程序
- 远程监控程序的思路
- visualvm监控远程机器上的Java程序
- hbase-0.98安装文档
- 如何查看OSB默认数据库(Derby)的表数据?
- Linux管理员不能不知的五大命令
- OC学习笔记(2)类的定义
- FAT16图文详解
- 利用java实现一个简单的远程监控程序
- 昌超给的top适配 3x 代码
- iOS5系统API和5个开源库的JSON解析速度测试
- 读书笔记_java设计模式深入研究 第三章 工厂模式 Factory
- C读txt到二维数组
- MySQL查找SQL耗时瓶颈 SHOW profiles
- 虚拟机中装(重装)VMWare_Tools
- HTTP协议分析系列(三)------HTTP协议方法和状态码
- Windows下用Putty管理VMware Workstation 虚拟机中安装的Ubuntu12.04 LTS