`
endual
  • 浏览: 3567297 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JAVA 桌面监控

 
阅读更多

java里面的Robot类可以完成截图的功能,借助于这点,我尝试着做了一个简陋的桌面监控程序,运行了下,感觉速度还可以,还有很大的优化空间的,比如用udp协议取代tcp等。代码也写的不是很优雅,只在娱乐了。     实现原理其实很简单,在被监视者的机器上,运行一个线程,每隔一段时间就自动截图,并把截图压缩发送到指定的机器上;在监视机器上,也是运行一个线程,接收发送过来的图片包,解压,并绘制到当前的窗口上。这样就基本完成了。  

Java代码
  1. public class Server extends Thread {   
  2.     private Dimension screenSize;   
  3.     private Rectangle rectangle;   
  4.     private Robot robot;   
  5.   
  6.     public Server() {   
  7.         screenSize = Toolkit.getDefaultToolkit().getScreenSize();   
  8.         rectangle = new Rectangle(screenSize);// 可以指定捕获屏幕区域   
  9.         try {   
  10.             robot = new Robot();   
  11.         } catch (Exception e) {   
  12.             e.printStackTrace();   
  13.             System.out.println(e);   
  14.         }   
  15.     }   
  16.   
  17.     public void run() {   
  18.         ZipOutputStream os = null;   
  19.         Socket socket = null;   
  20.         while (true) {   
  21.             try {   
  22.                 socket = new Socket("192.168.1.100"5001);// 连接远程IP   
  23.                 BufferedImage image = robot.createScreenCapture(rectangle);// 捕获制定屏幕矩形区域   
  24.                 os = new ZipOutputStream(socket.getOutputStream());// 加入压缩流   
  25.                 // os = new ZipOutputStream(new FileOutputStream("C:/1.zip"));   
  26.   
  27.                 os.setLevel(9);   
  28.                 os.putNextEntry(new ZipEntry("test.jpg"));   
  29.                 JPEGCodec.createJPEGEncoder(os).encode(image);// 图像编码成JPEG   
  30.                 os.close();   
  31.                 Thread.sleep(50);// 每秒20帧   
  32.             } catch (Exception e) {   
  33.                 e.printStackTrace();   
  34.             } finally {   
  35.                 if (os != null) {   
  36.                     try {   
  37.                         os.close();   
  38.                     } catch (Exception ioe) {   
  39.                     }   
  40.                 }   
  41.                 if (socket != null) {   
  42.                     try {   
  43.                         socket.close();   
  44.                     } catch (IOException e) {   
  45.                     }   
  46.                 }   
  47.             }   
  48.         }   
  49.     }   
  50.   
  51.     public static void main(String[] args) {   
  52.         new Server().start();   
  53.     }   
  54. }  
public class Server extends Thread {
	private Dimension screenSize;
	private Rectangle rectangle;
	private Robot robot;

	public Server() {
		screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		rectangle = new Rectangle(screenSize);// 可以指定捕获屏幕区域
		try {
			robot = new Robot();
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println(e);
		}
	}

	public void run() {
		ZipOutputStream os = null;
		Socket socket = null;
		while (true) {
			try {
				socket = new Socket("192.168.1.100", 5001);// 连接远程IP
				BufferedImage image = robot.createScreenCapture(rectangle);// 捕获制定屏幕矩形区域
				os = new ZipOutputStream(socket.getOutputStream());// 加入压缩流
				// os = new ZipOutputStream(new FileOutputStream("C:/1.zip"));

				os.setLevel(9);
				os.putNextEntry(new ZipEntry("test.jpg"));
				JPEGCodec.createJPEGEncoder(os).encode(image);// 图像编码成JPEG
				os.close();
				Thread.sleep(50);// 每秒20帧
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				if (os != null) {
					try {
						os.close();
					} catch (Exception ioe) {
					}
				}
				if (socket != null) {
					try {
						socket.close();
					} catch (IOException e) {
					}
				}
			}
		}
	}

	public static void main(String[] args) {
		new Server().start();
	}
}


 

Java代码
  1. public class Client extends JFrame {   
  2.     private static final long serialVersionUID = 1L;   
  3.     Dimension screenSize;   
  4.   
  5.     public Client() {   
  6.         super();   
  7.         screenSize = Toolkit.getDefaultToolkit().getScreenSize();   
  8.         this.setSize(800640);   
  9.         Screen p = new Screen();   
  10.         Container c = this.getContentPane();   
  11.         c.setLayout(new BorderLayout());   
  12.         c.add(p, SwingConstants.CENTER);   
  13.         new Thread(p).start();   
  14.         SwingUtilities.invokeLater(new Runnable(){   
  15.             public void run() {   
  16.                 setVisible(true);   
  17.             }});   
  18.     }   
  19.   
  20.     public static void main(String[] args) {   
  21.         new Client();   
  22.     }   
  23.   
  24.     class Screen extends JPanel implements Runnable {   
  25.   
  26.         private static final long serialVersionUID = 1L;   
  27.         private Image cimage;   
  28.   
  29.         public void run() {   
  30.             ServerSocket ss = null;   
  31.             try {   
  32.                 ss = new ServerSocket(5001);// 探听5001端口的连接   
  33.                 while (true) {   
  34.                     Socket s = null;   
  35.                     try {   
  36.                         s = ss.accept();   
  37.                         ZipInputStream zis = new ZipInputStream(s   
  38.                                 .getInputStream());   
  39.                         zis.getNextEntry();   
  40.                         cimage = ImageIO.read(zis);// 把ZIP流转换为图片   
  41.                         repaint();   
  42.                     } catch (Exception e) {   
  43.                         e.printStackTrace();   
  44.                     } finally {   
  45.                         if (s != null) {   
  46.                             try {   
  47.                                 s.close();   
  48.                             } catch (IOException e) {   
  49.                                 e.printStackTrace();   
  50.                             }   
  51.                         }   
  52.                     }   
  53.                 }   
  54.             } catch (Exception e) {   
  55.             } finally {   
  56.                 if (ss != null) {   
  57.                     try {   
  58.                         ss.close();   
  59.                     } catch (IOException e) {   
  60.                         e.printStackTrace();   
  61.                     }   
  62.                 }   
  63.             }   
  64.         }   
  65.   
  66.         public Screen() {   
  67.             super();   
  68.             this.setLayout(null);   
  69.         }   
  70.   
  71.         public void paint(Graphics g) {   
  72.             super.paint(g);   
  73.             Graphics2D g2 = (Graphics2D) g;   
  74.             g2.drawImage(cimage, 00null);   
  75.         }   
  76.     }   
  77. }  

 

分享到:
评论
2 楼 endual 2011-11-02  
exp111 写道
这个zip压缩确实很强啊 问下楼主 怎么才能只连接一次不停的传呢 不是一次传一张 把socket连接代码提到外面好像不行

谢谢你的提问,抱歉我也是其他看来的呵呵,并非原创哦。
如果愿意进行交流 ,你可见加我QQ1019990976
1 楼 exp111 2011-10-28  
这个zip压缩确实很强啊 问下楼主 怎么才能只连接一次不停的传呢 不是一次传一张 把socket连接代码提到外面好像不行

相关推荐

    java桌面监控程序

    “Java桌面监控程序”是指利用Java编程语言开发的一种运行在用户桌面上的应用程序,主要用于监控计算机系统的各项活动或状态。这类程序通常具备实时监测系统资源(如CPU、内存使用情况)、网络流量统计、应用程序...

    用Java实现的远程桌面监控

    这里我们关注的是一个用Java实现的远程桌面监控解决方案。Java作为一种跨平台的编程语言,提供了丰富的API和库,使得开发这样的系统成为可能。 首先,实现远程桌面监控的核心在于网络通信和屏幕捕获技术。Java的...

    局域网中远程桌面监控系统的设计与实现.doc

    我们将使用Java语言实现远程桌面监控系统,并使用NetBeansIDE6.7作为开发工具。 远程桌面监控系统的应用前景非常广泛,例如: 1. 远程维护:远程桌面监控系统可以让维护人员远程监控和维护计算机,提高维护效率和...

    基于WebRtc网页远程桌面监控

    【基于WebRtc网页远程桌面监控】是一种创新的技术解决方案,它允许用户在浏览器中实现对远程计算机的实时监控,无需安装额外的插件或应用程序。这一特性极大地提升了用户体验,因为用户不再需要面对传统远程桌面软件...

    基于Java的远程桌面监控源代码.rar

    【标题】"基于Java的远程桌面监控源代码"是一个与Java编程相关的项目,它涉及到Java技术在实现远程桌面监控方面的应用。远程桌面监控通常是指通过网络远程查看和控制另一台计算机的桌面,这对于系统管理员进行远程...

    基于Java的远程桌面监控源代码.doc

    本文档的主要内容是基于Java的远程桌面监控源代码

    通过java socket实现屏幕网络监控

    在这个场景中,我们讨论的是如何使用Java Socket来实现实时的屏幕监控功能,即服务端能够远程查看客户端的屏幕内容,这样的功能在远程协助、监控或者演示场景中非常有用。 首先,我们需要了解Java Socket的基本概念...

    Java远程监控源码

    本人自己写的Java远程监控,超简单,代码清晰易懂,使用UDP不可靠连接,cpu占用少,不过只有远程桌面监控,目前尚不能远程操作。。。纯Java代码无扩展jar包。 另免费附送基于JMF的远程摄像头监控,xp可用win7有些...

    java 桌面图像获取带鼠标

    本文将详细讲解如何通过Java实现这一功能,以及如何利用这些技术来创建一个简单的桌面监控程序。 首先,Java提供了丰富的API用于处理图形和图像,其中AWT(Abstract Window Toolkit)和Swing库是主要的工具。在Java...

    java远程监控功能的实现

    在远程监控场景下,可以使用Robot类的createScreenCapture方法获取远程计算机的屏幕快照,以便于监控远程计算机的实时桌面情况。此外,还可以通过keyPress和keyRelease方法模拟键盘输入,mouseMove、mousePress和...

    java实现的远程桌面监控.rar

    Java实现的远程桌面监控系统是一种基于客户端-服务器(Client-Server,CS)架构的技术,它允许用户通过网络从一个地方访问并控制另一个地方的计算机。这个技术在IT管理、技术支持和远程协作等领域有着广泛的应用。...

    【毕业设计】局域网中远程桌面监控系统的设计与实现

    本文主要探讨了一种基于Java语言,利用NetBeans IDE 6.7开发的局域网远程桌面监控系统的设计与实现过程。 首先,该系统的核心目标是使维护人员能够在局域网内远程控制和管理多台计算机,实现实时监控计算机运行状态...

    基于JAVA CS远程监控系统软件的实现源代码

    该系统适用人群为需要进行远程设备监控和控制的企业、学校、政府等单位,系统的主要使用场景包括:远程设备实时监控和控制、网络视频监控和远程桌面管理等多种场景。该系统的主要目标是为企业、学校、政府等单位提供...

    JAVA开发的远程桌面监视小程序

    【JAVA开发的远程桌面监视小程序】是一个基于Java技术实现的简易版远程监控应用程序,它能够让你在一台设备上查看另一台设备的桌面活动。这个小程序是作者在大学期间完成的一次中级软件实作项目的成果,作为大三上...

    远程桌面监控简易源码.rar

    《简易远程桌面监控系统——基于Socket编程》 在IT领域,远程桌面监控是常见的系统管理工具,它允许管理员从远程位置访问和控制其他计算机。本篇文章将深入探讨一个基于Socket编程的简易远程桌面监控源码,该源码...

    Java设计的桌面程序

    Java设计的桌面程序是一种利用Java编程语言开发的用于在个人计算机上运行的应用程序。Java以其“一次编写,到处运行”的特性,使得它成为跨平台桌面应用的理想选择。本项目主要聚焦于PC监控管理,旨在提供一种高效且...

    java开发的一个windows的远程监控软件

    标题中的“java开发的一个windows的远程监控软件”表明这是一个使用Java编程语言开发的应用程序,其主要功能是针对Windows操作系统进行远程监控。Java是一种跨平台的编程语言,这意味着编写好的Java程序可以在任何...

    软著V1 基于Java的远程桌面监控源代码 交底.pdf

    【标题】:“软著V1 基于Java的远程桌面监控源代码 交底.pdf” 【描述】:这段描述没有提供具体的信息,因此我们无法深入讨论。但是,从标题中我们可以推测这是一个关于使用Java编程语言实现的远程桌面监控系统的源...

    软著V1基于Java的远程桌面监控源代码交底.doc

    【软著V1基于Java的远程桌面监控源代码交底】文档主要介绍了一个使用Java语言编写的远程桌面监控系统的源代码结构和关键组件。这个系统允许用户远程监控其他计算机的桌面活动,提供了一种安全、便捷的方式来管理和...

Global site tag (gtag.js) - Google Analytics