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

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

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

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

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

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

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

1、项目分析

1.1 需求性分析

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

  • 客户端登陆、退出工具

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

  • 客户端系统托盘功能优化

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

  • 服务器端显示链接用户的用户树

  • 客户端退出后用户树刷新

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

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等。

 


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

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

相关文章
相关标签/搜索