《远程屏幕监控系统》PPT课件.ppt_第1页
《远程屏幕监控系统》PPT课件.ppt_第2页
《远程屏幕监控系统》PPT课件.ppt_第3页
《远程屏幕监控系统》PPT课件.ppt_第4页
《远程屏幕监控系统》PPT课件.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7讲远程屏幕监控系统 教学目标与要求 了解远程屏幕监控的原理了解图像压缩编码 解码的类及其实现教学重点 难点 1 教学重点 远程屏幕监控的原理图像压缩编码 解码使用UDP协议发送数据包发送 接受鼠标和键盘控制命令并执行其操作指令2 教学难点 图像压缩编码 解码发送 接受鼠标和键盘控制命令并执行其操作指令 提问 处于局域网内的两台计算机 当一台计算机出现故障 由于地理位置及时间紧迫等因素 不便于直接去操作该台计算机 那么如何实现通过另一计算机对该台计算机进行直接的操作呢 7 1远程屏幕监控的原理 控制端 客户端程序 输入被控端 服务器端程序 的IP地址后 就可以抓取到被控端的屏幕图像 还可以对被控端进行远程操作 7 2系统结构设计 8 2 1系统总体结构1 远程屏幕监控系统是一个客户机与服务器系统 程序分为服务器端和客户端两部分 其总体结构如下图所示 2 服务器端程序功能 1 发送自己的屏幕图像 2 接收客户端传来的控制命令 并执行相应的操作 3 服务器端程序结构 如图8 2所示 图8 2服务器端程序结构 4 客户端程序功能 1 接收被控端 服务器 传来的屏幕图像 2 向被控端发送鼠标操作或键盘操作指令 5 客户端程序结构 如图8 3所示 7 2 2常用类的介绍1 生成JPEG压缩图像编码 解码的类在com sun image codec jpeg类包中 主要应用以下几个类 1 JPEGCodec 执行JPEG图像编码的类 2 JPEGEncodeParam 生成JPEG数据流的压缩编码类 并可对其实例化后的对象设置压缩的品质系统 其品质系统对压缩后生成图像的质量有很大影响 品质系数越小 压缩率越高 图像质量越差 反之 品质系数越大 压缩率越低 图像质量越好 3 JPEGDecodeParam 对压缩的JPEG数据流进行解码的类 2 字节数组输入流 输出流 1 ByteArrayInputStream 字节数组输入流 包含一个内部缓冲区 该缓冲区存储从输入流中读取的字节 ByteArrayInputStream byte buf intoffset intlength 创建ByteArrayInputStream 使用buf作为其缓冲区数组 2 ByteArrayOutputStream 字节数组输出流 将输出流中的数据被写入一个字节数组 缓冲区会随着数据的不断写入而自动增长 可使用toByteArray 和toString 检索数据 ByteArrayOutputStream 创建一个新的字节数组输出流 3 关于Robot类控制鼠标和键盘事件的方法 robot mousePress intbutton 被控端触发按下鼠标的动作事件robot mouseRelease intbutton 被控端触发释放鼠标的动作事件robot mouseMove intx inty 被控端触发移动鼠标的动作事件robot mouseWheel intbutton 被控端触发滚轮鼠标的动作事件robot keyPress intcode 被控端触发按下键盘的动作事件robot keyRelease intcode 被控端触发释放键盘的动作事件其中 robot是Robot实例化的对象 7 3服务器端程序详细设计1 类名 ServerTest类功能 线程类 发送自己的屏幕图像 并接受和执行控制命令方法1 main 功能 主函数 建立窗口并安排界面布局 调用线程方法2 ServerTest 功能 构造方法 建立UDP数据报对象方法3 sendScreen 功能 按UDP协议发送压缩的屏幕图像数据包方法4 run 功能 接受和执行控制命令 3 发送屏幕图像方法sendScreen 1 工作流程 2 代码实现 try BufferedImageimage robot createScreenCapture newRectangle toolkit getScreenSize image image getSubimage 0 0 800 600 返回由指定矩形区域定义的子图像 ByteArrayOutputStreamoutput newByteArrayOutputStream 创建字节数组输出流 将图像数据压缩为JPEG码的图像数据JPEGEncodeParamparam JPEGCodec getDefaultJPEGEncodeParam image param setQuality 0 3f false 设置压缩率 将JPEG码的图像数据转到输出流JPEGImageEncoderencoder JPEGCodec createJPEGEncoder output param encoder encode image encoder getOutputStream close 关闭当前与编码器关联的流DatagramPacketpacket newDatagramPacket output toByteArray output size address 将图像数据打包this socket send packet 通过数据报套接字发送出去System out println i n catch Exceptione e printStackTrace 4 接受和执行控制命令的方法run 1 工作流程 2 run 在读取数据包指令内容时 按客户端发出来的数据的结构顺序还原指令 当判断出是REFRESH指令时 抓取自己的屏幕图像发送给控制端 当判断出是键盘指令时 其数据的前20位数据是指令类型 第20 30位数据是按键相对应的Unicode码 第30 40位数据是按键值 第40 50位数据是左 右键的位置 当判断出是鼠标指令时 其数据的前20位数据是指令类型 第20 30位数据是鼠标X坐标值 第30 40位数据是鼠标Y坐标值 第40 50位数据是左 右键的键值 7 4客户端程序详细设计1 类名 ClientTest类功能简介 发送控制指令 接收被控端传来的屏幕图像进行解压 还原并显示图像方法1 main 功能 主函数 建立输入被控端IP地址的窗口及显示被控端屏幕图像窗口 并设置键盘监听方法2 ClientTest 功能 构造方法 设置传送UDP数据报指令的参数 定义向被控端发出截取屏幕图像指令的线程 定义监听鼠标事件方法3 run 功能 接收被控端传来的屏幕图像数据 方法4 getScreen 功能 将接收到的屏幕图像数据进行解压 还原成图像方法5 sendKey 功能 向被控端发送控制键盘事件的指令方法6 sendMouse 功能 向被控端发送控制鼠标事件的指令方法7 paint 功能 绘制被控端的屏幕图像 2 方法调用关系 2 主函数main 在主函数中创建了一个输入被控端IP地址信息的窗体 如图8 7所示 窗口中安排了一个 确定 按钮 单击该按钮后 输入IP地址信息窗体将被隐藏 这时 弹出显示被控端屏幕图像的窗口 并通过线程ClientTest 向被控端发出截取屏幕图像的指令 从而能在窗口中显示被控端的屏幕图像 图8 7输入被控端IP地址信息的窗体 3 构造方法ClientTest 向被控端发送REFRESH字符串 其实就是向被控端发出截取屏幕图像的指令 DatagramPacketpacketsign newDatagramPacket REFRESH getBytes 20 Socket send packetsign 然后调用线程run 方法来接收被控端传来的屏幕图像数据 4 线程run 方法线程run 方法用于接收被控端传来的屏幕图像数据 5 还原屏幕图像方法getScreen getScreen 方法用于对接收到的屏幕图像数据进行解压 还原成图像 JPEGImageDecoderdecoder JPEGCodec createJPEGDecoder input BufferedImageimage decoder decodeAsBufferedImage this image image this setPreferredSize newDimension image getWidth image getHeight 最后通过panit 方法将image图像显示出来 6 发送键盘指令方法sendKey 发送键盘指令的方法为 voidsendKey inttype intcode charc intlocation 其中定义了四个参数 inttype为指令类型 判断是按下键还是释放键 intcode为按键相对应的Unicode码 charc为按键值 intlocation为按键所在 左键 右键 位置 在sendKey 方法中 构造了一个用于发送指令数据的字节数组bytes byte bytes newbyte 50 该数组有50个数组元素 前20位元素存放指令类型 第20 30位元素存放按键相对应的Unicode码 第30 40位元素存放按键值 第40 50位元素存放左 右键位置 如图8 8所示 7 发送控制鼠标事件的方法sendMouse 发送控制鼠标事件的方法为 voidsendMouse inttype intx inty intbutton 其中定义了四个参数 inttype为指令类型 判断是单击鼠标 释放鼠标 移动鼠标还是滚动鼠标滚轮 intx y为鼠标指针坐标位置 intbutton为单击鼠标左键或右键的键值 在sendMouse 方法中构造的字节数组bytes 其数组有50个数组元素 前20位元素存放指令类型 第20 30位元素存放鼠标指针x坐标值 第30 40位元素存放鼠标指针y坐标值 第40 50位元素存放左 右键的键值 如图8 9所示 教学总结 1 一般将数据打包 都必须指定目的主机的IP地址和端口 在本例中 我们看到packet newDatagramPacket output toByteArray output siz

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论