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

远程屏幕监控系统在生活中是很常见的,学校机房的机房管理系统、PC版QQ的远程演示功能等都属于远程屏幕监控系统。监控系统的原理是通过客户端不断的截取屏幕发送到服务器端,服务器端进而将画面呈现出来的过程。本论文实现的是一个多客户端的远程屏幕监控系统。本论文第一部分对系统进行项目分析,包括需求分析、可行性分析、相关技术分析,大致介绍了整个项目需要做的工作以及需要掌握的技术,介绍了Socket通信原理...
摘要由CSDN通过智能技术生成

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

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

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

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

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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
package cn.com.origin.net; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server { public Server() { } public void listen() throws IOException { ServerSocket server = new ServerSocket(8002); while (true) { try { Socket client = server.accept(); if (client != null) { ServerProcessor processor = new ServerProcessor(client); processor.start(); } } catch (Throwable e) { e.printStackTrace(); } } } public static void main(String[] args) throws IOException { Server s = new Server(); s.listen(); } } package cn.com.origin.net; import java.awt.AWTException; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import com.sun.image.codec.jpeg.ImageFormatException; import com.sun.image.codec.jpeg.JPEGCodec; public class ServerProcessor extends Thread { // private Socket client; public static final int SEND_IMAGE_SYMBOL = 0x00000000; // private InputStream is; private DataOutputStream dos; private Robot robot; private Rectangle rect; private BufferedImage bm; public ServerProcessor(Socket client) throws IOException, AWTException { // this.client = client; // is = client.getInputStream(); dos = new DataOutputStream(client.getOutputStream()); // bm = ImageIO.read(new File("E:\\Caokai\\001.png")); robot = new Robot(); rect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); } public void run() { while (true) { try { bm = robot.createScreenCapture(rect); ByteArrayOutputStream bos = new ByteArrayOutputStream(); ZipOutputStream zis = new ZipOutputStream(bos); zis.setLevel(9); zis.putNextEntry(new ZipEntry("ScreenCapture.jpg")); JPEGCodec.createJPEGEncoder(zis).encode(bm); // ImageIO.write(bm, "jpg", zis); zis.closeEntry(); bos.flush(); byte[] data = bos.toByteArray(); dos.write(SEND_IMAGE_SYMBOL); // System.out.println("Server - data.length = " + data.length); dos.writeInt(data.length); dos.write(data); dos.flush(); // 每秒2帧 Thread.sleep(500); } catch (ImageFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); break; } catch (InterruptedException e) { e.printStackTrace(); } } } }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值