`
freeman983
  • 浏览: 232218 次
社区版块
存档分类
最新评论

利用java实现一个简单的远程监控程序

阅读更多
一般的远程监控软件都是用c或者c++等语言开发的,而使用java如何来实现相同的功能呢。

首先我们先介绍一下一个简单的远程监控程序的实现原理。

功能一,远程屏幕监视
(1) 必须要有监控端与被监控端,而且程序保持启动。
(2) 被监控端获取本机的屏幕截屏发图给监控端。
(3) 监控端在本地窗口中显示被监控端发送过来的图像。
(4) (2)(3)步骤重复执行,这时在监控端即可实时监视到被监控端的桌面操作了。

功能二,远程控制
(1) 必须要有监控端与被监控端,而且程序保持启动。
(2) 在监控端监视窗体上执行鼠标点击事件。
(3) 记录步骤 (2)中的鼠标点击的坐标,及键值发送到被监控端。
(4) 被监控接受鼠标坐标,及键值,然后再本地屏幕上模拟同样的点击动作。

OK,现在看下具体的java与语言是如何实现上述功能的。

使用java语言要实现截屏的功能就要依靠java类库中的一个有趣的类
java.awt.Robot类【俗称Java机器人】了


功能一,远程屏幕监视
//『客户端』抓取屏幕快照GuiCamera.java

            BufferedImage screenshot =
                    (new Robot()).createScreenCapture(
                            new Rectangle(0, 0, (int) size.getWidth(),
                                          (int) size.getHeight()));
           


//『客户端』发送快照 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语言的一些限制,本实例仅作为演示。有感兴趣的朋友可以下载附件中的程序做进一步参考。
分享到:
评论
6 楼 kai1230hu 2014-11-06  
LZ  我想问下  为什么只能监控自己的,不能监控别人的
5 楼 blacksunglass 2008-08-01  
<div class='quote_title'>exatimes 写道</div>
<div class='quote_div'>
<p>利用java实现一个简单的<a href='http://www.exatimes.com' target='_blank'><span style='color: #000000;'>远程监控</span></a>程序</p>
<p> </p>
</div>
<p><br/>远程监控的超链接如何实现的?</p>
4 楼 blacksunglass 2008-08-01  
利用java实现一个简单的<a href="http://www.exatimes.com" target="_blank"><span style="color: #000000;">远程监控</span></a>程序
3 楼 exatimes 2008-07-28  
<p>利用java实现一个简单的<a href='http://www.exatimes.com' target='_blank'><span style='color: #000000;'>远程监控</span></a>程序</p>
<p> </p>
2 楼 hzmslx 2008-07-01  
谢谢你啦
对我来说收获很大
1 楼 ssevening 2008-06-17  
很好,学习了,呵呵,支持楼主一下!

相关推荐

    利用java实现一个简单的远程监控程序.pdf

    以上就是利用Java实现一个简单远程监控程序的主要技术细节。这个程序的核心在于`Robot`类的使用,它使得在Java中捕获和操纵屏幕成为可能。同时,网络通信技术也是关键,通过TCP/IP协议传输屏幕截图和控制指令。在...

    java实现简单远程监控

    在Java中实现远程监控可以利用Java的多种内置特性,如JMX(Java Management Extensions)、RMI(Remote Method Invocation)以及网络编程API。下面我们将详细探讨如何使用Java来构建一个简单的远程监控系统。 首先...

    利用java实现一个简单的远程监控程序资料.pdf

    本文将探讨如何使用Java来构建一个简单的远程监控程序。 ### 远程屏幕监视 远程屏幕监视是远程监控程序的基础功能,其工作流程包括以下几个关键步骤: 1. **监控端与被监控端**:程序需要在两台计算机上同时运行...

    java实现的远程控制程序

    Java实现的远程控制程序是一种利用Java技术实现在网络上的设备或计算机之间的控制功能。这个程序通常涉及网络通信、多线程、输入/输出流以及可能的图形用户界面(GUI)设计。下面将详细讨论相关知识点。 1. **Java ...

    java 远程控制程序

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

    利用Java实现远程控制

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

    远程控制java实现

    Java 远程控制技术是利用 Java 的网络编程能力来实现在不同计算机间进行交互操作的一种技术。在 Java 中,远程控制通常涉及到 RMI (Remote Method Invocation)、JMX (Java Management Extensions) 和 SSH (Secure ...

    Java远程控制简单实现

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

    java实现的远程控制 源码

    【标题】:“java实现的远程控制 源码”揭示了这个项目是使用Java编程语言构建的一个远程控制程序。远程控制通常涉及到一个客户端和服务器端的通信,允许用户通过网络对另一台计算机进行操作。在这个特定的案例中,...

    java 远程监控程序JSN

    Java远程监控程序JSN是一种用于监视和管理分布式Java应用程序的工具。它允许开发者或系统管理员在不中断应用程序运行的情况下收集性能数据、诊断问题并进行优化。JSN(Java Server Monitoring)通常包括各种功能,如...

    java实现远程控制

    总结,本Java实现的远程控制程序是一个高效、易用的解决方案,它利用了Java的强大功能,如多线程和B/S架构,以实现远程控制的需求。配合详细的开发文档和可执行文件,开发者和用户都能轻松理解和使用这个系统,...

    java程序实现远程控制

    ### 二、利用Java实现远程控制的关键步骤 #### 1. 屏幕图像截取 - **获取屏幕尺寸**:首先需要获取当前屏幕的尺寸信息。 - 使用代码:`Rectangle rect = new Rectangle(Toolkit.getDefaultToolkit()....

    Java实现调用远程桌面示例

    此项目旨在提供一个稳定且可扩展的平台,以便开发者能够在Java应用程序或Web应用中集成远程桌面功能。 首先,我们来看如何在普通的Java程序中使用`properJavaRDP`。这通常涉及到以下步骤: 1. **添加依赖**:将`...

    Java远程桌面程序

    Java远程桌面程序是一种技术,允许用户通过网络连接到另一台计算机并进行交互操作,类似于Windows自带的远程桌面连接工具。这种技术在系统管理员、开发者和远程协作中非常常见,因为它可以方便地对远程服务器进行...

    基于java远程监控软件

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

    java 实现上传文件到远程服务器

    本篇文章将详细介绍如何利用Java编程语言结合Spring MVC框架来实现文件的远程上传功能。具体实现过程中,我们会采用HTTP协议中的`POST`方法,并通过`multipart/form-data`编码格式来传输数据。 #### 关键概念和技术...

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

    本文将深入探讨这一主题,详细介绍如何利用Java技术设计并实现一个网络远程监控系统。 【描述】: Java作为一种广泛使用的编程语言,其强大的网络功能和丰富的类库为构建网络远程监控系统提供了坚实的基础。网络...

    java桌面监控程序

    根据提供的部分代码示例,我们可以进一步理解如何使用Java实现一个简单的桌面监控程序: 1. **服务器端实现**: - 首先,需要编写一个名为`Server.java`的类文件。 - 使用命令行编译该Java文件:`javac Server....

    springboot实现远程控制

    在本项目中,"springboot实现远程控制"是一个利用Spring Boot技术栈构建的后端服务,结合了Java的Robot类和WebSocket技术,旨在创建一个简单的远程控制应用。这个应用允许用户通过浏览器(B/S架构)进行远程操作,实现...

    Java调用本地的远程桌面连接

    在IT行业中,有时我们需要在Java程序中实现自动化操作,例如远程控制其他计算机。"Java调用本地的远程桌面连接"这个话题就是关于如何利用Java编程语言来启动并配置本地的远程桌面连接(RDP,Remote Desktop Protocol...

Global site tag (gtag.js) - Google Analytics