`

JAVA的远程控制系统(远程监控)实现

阅读更多

在公司,无聊之际,看到网上关于Robot()类的使用,随想自己实现一个简单的监控系统。这个监控系统没有实现远程的控制操作,只是简单的客户端可以看到远程看到服务器的桌面。另外我在机房局域网测试的时候,发现客户端发现服务器的改变需要5-10秒的时间。不知原因为何?

java 代码
  1. /* 
  2.   客户端的实现:主要实现的功能是从服务器得到服务器桌面的图片,并进行显示。 
  3. */  
  4. import java.awt.*;  
  5. import javax.swing.*;  
  6. import java.awt.event.*;  
  7. import java.util.*;  
  8. import java.util.Timer;  
  9. import java.io.IOException;  
  10. import java.net.*;  
  11. public class Client extends JFrame  
  12. {  
  13.  private java.net.Socket cs;  
  14.         private MyPanel mypanel;  
  15.  public Client()  
  16.  {  
  17.   mypanel=new MyPanel();  
  18.   this.getContentPane().add(mypanel);  
  19.     
  20.   this.clock.start();  
  21.   this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);  
  22.  }  
  23.  public static void main(String[] args)  
  24.  {  
  25.   Client client = new Client();  
  26.   client.setSize(800800);  
  27.   client.setVisible(true);  
  28.    
  29.  }  
  30.     private javax.swing.Timer clock=new javax.swing.Timer(1000,new ActionListener() {  
  31.   public void actionPerformed(ActionEvent e)  
  32.   {  
  33.    try  
  34.    {  
  35.          cs=new java.net.Socket("192.168.0.3"12000);  
  36.     Image image=javax.imageio.ImageIO.read(cs.getInputStream());  
  37.     mypanel.setImage(image);  
  38.     mypanel.repaint();  
  39.     cs.close();  
  40.    } catch (UnknownHostException e2)  
  41.    {  
  42.       
  43.     e2.printStackTrace();  
  44.    } catch (IOException e2)  
  45.    {  
  46.       
  47.     e2.printStackTrace();  
  48.    }  
  49.      
  50.      
  51.   }  
  52.        
  53.     });  
  54.  public void drawImage()  
  55.  {  
  56.     
  57.  }  
  58. }  
  59. class MyPanel extends JPanel  
  60. {  
  61.  private Image image;  
  62.  public MyPanel(Image image)  
  63.  {  
  64.     this.image=image;   
  65.  }  
  66.    public void setImage(Image image)  
  67.    {  
  68.     this.image=image;  
  69.    }  
  70.  public MyPanel()  
  71.  {  
  72.   // TODO 自动生成构造函数存根  
  73.  }  
  74.  public void paintComponent(Graphics g)  
  75.  {  
  76.   g.drawImage(image, 00null);  
  77.  }  
  78. }  
  79. /*********************************************************************** 
  80. *************************************************************************/  
  81. /* 
  82.  服务器端的实现: 
  83.   主要实现采集服务器的桌面,并多线程实现给客户端的发送 
  84. */  
  85. import java.io.IOException;  
  86. import java.net.ServerSocket;  
  87. import java.net.Socket;  
  88. public class Server  
  89. {  
  90.     private final static int PORT = 12000;  
  91.     public static void main(String[] args)  
  92.     {  
  93.  try  
  94.  {  
  95.      ServerSocket server = new ServerSocket(PORT);  
  96.      Socket connection = null;  
  97.      while (true)  
  98.      {  
  99.   try  
  100.   {  
  101.      new ShotThread(server).start();  
  102.   } finally  
  103.   {  
  104.       try  
  105.       {  
  106.    if (connection != null)  
  107.        connection.close();  
  108.       } catch (IOException e)  
  109.       {  
  110.       }  
  111.   }  
  112.      }  
  113.  } catch (IOException ee)  
  114.  {  
  115.      System.err.println(ee);  
  116.  }  
  117.     } // end main  
  118. }  
  119. /** 
  120.  * 多线程的连接: 
  121.  * 
  122.  */  
  123. class ShotThread extends Thread  
  124. {  
  125.     ServerSocket server;  
  126.     public ShotThread(ServerSocket server)  
  127.     {  
  128.  try  
  129.  {  
  130.      this.connection = server.accept();  
  131.  } catch (IOException e)  
  132.  {  
  133.      e.printStackTrace();  
  134.  }  
  135.     }  
  136.     public void run()  
  137.     {  
  138.  System.out.println("得到连接:");  
  139. // try  
  140. // {  
  141. //    // this.sleep(500);  
  142. // } catch (InterruptedException e2)  
  143. // {  
  144. //     //  
  145. //     e2.printStackTrace();  
  146. // }  
  147.  java.awt.image.BufferedImage image = (new ShotImage()).snapShot();  
  148.  if (image == null)  
  149.      try  
  150.      {  
  151.   throw new IOException();  
  152.      } catch (IOException e1)  
  153.      {  
  154.   // TODO 自动生成 catch 块  
  155.   e1.printStackTrace();  
  156.      }  
  157.  try  
  158.  {  
  159.     
  160.      javax.imageio.ImageIO.write(image, "jpg", connection  
  161.       .getOutputStream());  
  162.      connection.close();  
  163.  } catch (IOException e)  
  164.  {  
  165.      e.printStackTrace();  
  166.      
  167.  }  
  168.     }  
  169.     Socket connection = null;  
  170. }  
  171. /************************************************************************ 
  172. *************************************************************************/  
  173. /* 
  174.  图片采集的代码 
  175. */  
  176.    
  177.   
  178. import java.awt.Dimension;  
  179. import java.awt.Rectangle;  
  180. import java.awt.Robot;  
  181. import java.awt.Toolkit;  
  182. import java.awt.image.BufferedImage;  
  183. public class ShotImage  
  184. {  
  185.  private Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();  
  186.  private String imageFormat = "jpg";  
  187.  private int Num = 0;  
  188.  BufferedImage screenshot;  
  189.  public synchronized  BufferedImage snapShot()  
  190.  {  
  191.   try  
  192.   {  
  193.    screenshot = (new Robot()).createScreenCapture(new Rectangle(00,  
  194.    (int) dimension.getWidth(), (int) dimension.getHeight()));  
  195.   } catch (Exception ex)  
  196.   {  
  197.    System.out.println(ex);  
  198.   }  
  199.   return screenshot;  
  200.  }  
  201. }  
分享到:
评论
5 楼 renovatio 2012-08-01  
4 楼 cynan168 2009-12-03  
很好,很强大
3 楼 xiaobin268 2008-11-20  
为什么运行就黑屏呢
2 楼 konglq 2007-11-02  
不错啊,什么时候能改好啊,给我们参考参考啊。
1 楼 anywalker 2007-10-27  

很好
谢谢
但是有个问题,就是Client接到的效果不是很好,
没有缩放,而且图像重叠。
我现在要改进一下

相关推荐

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

    基于Java CS远程监控系统软件的设计与实现项目是一款基于Java语言开发的远程监控软件,主要应用Java Socket和Java AWT等技术,实现对远程设备的实时监控和控制。该系统可为企业、学校、政府等单位提供便捷和安全的...

    Java实现远程控制

    Java作为一种跨平台的编程语言,提供了多种方法来实现远程控制功能。本篇文章将详细探讨如何使用Java来实现这一目标。 首先,我们需要理解Java中的远程方法调用(Remote Method Invocation,简称RMI)。RMI是Java...

    Java远程控制简单实现

    这篇名为“Java远程控制简单实现”的博客文章可能探讨了如何利用Java技术实现远程控制系统。远程控制通常涉及通过网络对远程计算机进行操作,这在系统管理、自动化任务执行以及分布式系统通信中非常常见。 首先,...

    基于JAVA网络远程监控系统软件的实现(源码)

    Java网络远程监控系统是一种能够实时收集、分析和管理分布在不同地理位置的计算机系统状态的软件解决方案。这个基于JAVA的网络远程监控系统提供了强大的功能,包括硬件性能监控、软件运行状况检查、网络流量分析以及...

    远程控制java实现

    Java 远程控制技术是利用 Java 的网络编程能力来实现在不同计算机间进行交互操作的一种技术。在 Java 中,远程控制通常涉及到 RMI (Remote Method ...理解并掌握这些技术,能帮助开发者构建强大、安全的远程控制系统。

    java 远程控制程序

    总的来说,Java远程控制程序通过Java RMI技术实现了跨越网络的通信,它在分布式系统中有广泛的应用,例如远程监控、系统管理、自动化任务调度等。通过深入学习和实践,你可以掌握这种强大的工具,提升你的IT技能。

    用Java实现的远程桌面监控

    客户端接收到这些命令后,在本地模拟执行,从而实现远程控制。 此外,考虑到权限和安全性,该系统应该包含一种机制让远程用户可以选择接受或拒绝控制请求。这可以通过设置权限验证或者建立会话密钥来实现。例如,...

    基于JAVACS远程监控系统软件的实现.pdf

    根据文件提供的信息,我们可以从中提炼出多个关于JAVACS远程监控系统软件实现相关的知识点。以下为详细知识点内容: 1. Java语言与JAVACS远程监控系统的关联 JAVACS远程监控系统是使用Java语言开发的,这可能是因为...

    基于Java的远程屏幕监控系统

    【标题】"基于Java的远程屏幕监控系统"揭示了这个项目的核心是利用Java编程语言来实现一个能够远程监控用户屏幕的应用。这样的系统通常用于远程协助、教育、安全监控或者企业管理等场景,允许管理员或授权用户实时...

    利用Java实现远程控制

    Java程序可以做到“一次编写,处处运行”,这意味着Java远程控制软件可以在不同操作系统上无缝运行,无需为每个平台单独编译,极大地增强了软件的实用性和兼容性。 #### 3. 实现远程控制的Java技术细节 ##### 3.1 ...

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

    标题中的“java开发的一...总的来说,这个Java开发的Windows远程监控软件结合了Java编程语言的跨平台优势,实现了对Windows系统的远程监控功能,涵盖了多种监控及管理操作,并且在开发过程中可能运用了多种技术和工具。

    java_remote_control_help.rar_java 监控_java 远程控制_remote_计算机监控_远程控制

    **远程监控实现** 在Java中实现远程监控,通常会创建一个服务端应用,该应用包含需要监控的组件(如MBeans)和暴露管理接口。客户端通过RMI或JMX连接到服务端,获取监控数据或者执行控制命令。服务端需要开启一个RMI...

    java 远程控制 后端源码

    Java远程控制后端源码是实现远程操作和管理软件系统的一种技术,主要涉及Java RMI(Remote Method Invocation)和SSH(Secure Shell)等协议。在Java中,远程控制通常指的是通过网络连接到另一台计算机,并执行该...

    基于JAVA CS远程监控系统软件的实现(源代码+WORD论文文档论文).zip

    基于JAVA CS远程监控系统软件的实现(源代码+WORD论文文档论文) 基于JAVA C/S远程监控系统软件的实现 摘 要 近年来,网络技术的不断发展,为远程监控技术的发展创造了条件。远程监控系统软件越来越受到人们的重视,...

    基于java远程监控软件

    本项目名为“基于Java远程监控软件”,显然,它采用Java编程语言来实现这一功能,这涉及到Java的网络编程、多线程、IO流等核心技术。下面将详细解析这些知识点。 首先,Java作为跨平台的编程语言,其Java SE(标准...

    java 远程监控系统

    int choice = JOptionPane.showConfirmDialog(null, "请求控制对方电脑", "远程控制系统-Charles", JOptionPane.YES_NO_OPTION); if (choice == JOptionPane.NO_OPTION) { return; } String input =...

    java远程屏幕监控系统

    【标题】:“Java远程屏幕监控系统”是一种利用Java编程语言实现的远程监控解决方案,它允许用户通过网络实时查看和管理远程计算机的桌面画面。这样的系统在远程协作、技术支持、服务器管理等多个场景中都有广泛的...

    基于JAVA CS远程监控系统软件的实现(源代码+论文)【毕业论文】.zip

    《基于JAVA CS远程监控系统软件的实现》是一篇深度探讨Java客户端-服务器(Client-Server,简称CS)架构在远程监控系统中的应用的毕业论文。本文将深入剖析该系统的架构设计、关键技术及其实际应用,旨在为相关领域...

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

    远程桌面监控系统是指通过局域网连接的计算机之间,为了实现远程监控和控制的系统。该系统可以让本地计算机通过局域网访问不同的远程计算机,并对其进行操作。维护人员可以通过本系统实时地监控联网计算机的运行情况...

Global site tag (gtag.js) - Google Analytics