[源码和文档分享]基于JAVA的远程屏幕监控系统

远程屏幕监控系统在生活中是很常见的,学校机房的机房管理系统、PC版QQ的远程演示功能等都属于远程屏幕监控系统。监控系统的原理是通过客户端不断的截取屏幕发送到服务器端,服务器端进而将画面呈现出来的过程。本论文实现的是一个多客户端的远程屏幕监控系统。

本论文第一部分对系统进行项目分析,包括需求分析、可行性分析、相关技术分析,大致介绍了整个项目需要做的工作以及需要掌握的技术,介绍了Socket通信原理、截屏原理、Swing树、系统托盘、自定义JPanel实现显示监控图像以及多线程的知识。

第二部分分别对系统托盘模块、自定义协议模块、获取屏幕截图模块、连续发送与接收图片模块、登录、退出模块、多客户端处理模块、Swing树模块、自定义JPanel模块进行介绍。我没有直接搬上一大堆的理论知识,而是先简要介绍模块功能,然后按照正常思考的思路去实现项目需要的功能,并且去分析实现这个功能的必要性。遇到问题之后就分析出现这个问题的原因以及考虑如何去提升效率、减少存储空间等一系列优化问题。然后通过最后的分析给出一个优化后的解决方案,同时我将自己当时思考的错误点也罗列了出来,对多个处理方法都给予了尝试。针对每个模块都给出了功能的实现详细步骤以及示例代码。

第三部分是Web服务器环境配置以及程序使用说明。本项目是远程屏幕监控系统,如果要测试的话,服务器端的程序是需要部署在服务器上的,所以我将本机Web服务器环境配置的方法也讲解一下,另外还有关于本程序代码如何打包等知识都有讲解。

第四部分是我在写项目的过程中的犯的一些错误以及项目的难点,第五部分是对该系统后续的一些功能的设想,第六部分是我的一些感想,第七部分是项目运行效果的展示。

关键字:屏幕监控;Socket;Swing;自定义协议;Web服务器环境配置

一、项目分析

1.1 需求性分析

项目的初始阶段就是对整个系统进行预估,这有利于我们对整个系统的理解,屏幕监控系统需要实现的功能有:

客户端登录、退出

客户端截屏以及连续发送图像

客户端系统托盘功能

服务器端连续接收图像以及客户端其他请求

服务器端显示连接用户的用户树

客户端退出后用户树刷新

客户端发送图像后显示在服务器端

1.2 可行性分析

需求性分析里提到的功能能否实现呢?我们在这里进行讨论:

通过构造自定义协议实现,都是通过将这些请求构造成协议从而发送到服务器

截屏功能通过Robot类实现,然后将BufferedImage转化为字节数组输出流,再转化为字节数组,并以协议的方式发送到服务器实现图像的连续发送

使用系统托盘对象SystemTray来实现

可以通过自定义协议工具类提供的解析数据的方法解析出数据,并根据消息类型进行相应的处理

用户树使用JTree实现,DefaultTreeCellRenderer可以设置树的外观,为JTree设置节点选中监听器可以监听节点选中事件

用DefaultTreeModel的reload()方法实现

可以自定义JPanel,通过paint(g)方法绘制图片

1.3 技术点分析

1.3.1 Socket

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket,java的API提供了对Socket的支持。

1.3.2 自定义网络协议

网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。为了满足我们的需求,我们需要自定义一个协议,并为其提供发送消息、解析消息的功能。

1.3.3 系统托盘

系统托盘是个特殊区域,通常在桌面的底部,项目中涉及到了对系统托盘的一些操作,我们为客户端提供系统托盘功能,可以方便用户关闭监控。

1.3.4 IO流

流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作,用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出。我们主要使用的有DataOutputStream、DataInputSream、ByteArrayoOutputStream等。

[源码和文档分享]基于JAVA的远程屏幕监控系统_第1张图片

参考文档和完整的文档和源码下载地址:

https://www.write-bug.com/article/1373.html

你可能感兴趣的:([源码和文档分享]基于JAVA的远程屏幕监控系统)