已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 入选消防笔试题及答案
- 统编版语文三年级上册第五单元习作例文《我爱故乡的杨梅》公开课一等奖创新教案
- 青海县医院笔试题及答案
- 消毒产品标签说明书管理规范专家讲座
- 中小学幼儿园教师职称晋升考试试题及答案
- 农村会计笔试题及答案
- 嫩江事业编笔试题及答案
- 南阳会计班笔试题及答案
- 高中语文一轮复习专题十二文学类文本阅读第二节散文阅读核心方法突破课件
- 2025年制造业碳中和技术路线
- 第七单元综合测评卷(单元测试)2025-2026学年六年级语文上册(统编版)
- 四川省德阳市2025-2026学年高二上学期期中考试化学(含答案)
- 脑膜炎课件教学课件
- 2025年摄像导演岗位招聘面试参考试题及参考答案
- 2026届新高考政治热点突破复习 发展中国特色社会主义文化
- 电子元器件销售培训
- 2025年大学《马克思主义理论-马克思主义发展史》考试备考题库及答案解析
- 2025年大学《海警后勤管理-营房与设施管理》考试备考试题及答案解析
- 财务核算标准化建设方案
- 宴会厅音响系统施工方案
- (2025年)中医基础学试题库(附答案)
评论
0/150
提交评论