课程设计(论文)基于Java的开发远程协助监控系统的设计.doc
-
资源ID:2387670
资源大小:435KB
全文页数:15页
- 资源格式: DOC
下载积分:8金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
课程设计(论文)基于Java的开发远程协助监控系统的设计.doc
2013级学生java课程设计 Java课程设计报告书课题名称基于Java的开发远程协助监控系统的设计姓 名学 号学 院通信与电子工程学院专 业通信工程指导教师2015年 07月09日 一、设计任务及要求:设计目的(1)学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全过程。(2)进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计、Java多线程编程、Applet程序的设计、文件和网络输入输出流编程、Java数据库编程等。(3)通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。设计要求(1)问题的描述与程序将要实现的具体功能。(2)程序功能实现的具体设计思路或框架,并检查流程设计。(3)代码实现。(4)程序测试(如程序代码、功能测试、可靠性测试和效率测试等)。指导教师签名: 年 月 日 二、指导教师评语: 指导教师签名: 年 月 日三、成绩 验收盖章 年 月 日 基于Java的开发远程协助监控系统的设计1课程设计的目的 (1)学会Java程序开发的环境搭建与配置,学习和掌握Java程序开发的全过程。 (2)熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计、Java多线程编程、Applet程序的设计、文件和网络输入输出流编程、Java数据库编程等。 (3)通过写程序,拓展知识面和锻炼调试能力。2课程设计所要达到的要求 (1)问题的描述与程序将要实现的具体功能。 (2)程序功能实现的具体设计思路或框架,并检查流程设计。 (3)代码实现。 (4)程序测试(如程序代码、功能测试、可靠性测试和效率测试等)。3设计思路及方案论证3.1生成JPEG压缩图像编码、解码的类 在com.sun.image.codec.jpeg类包中,主要应用以下几个类: (1)JPEGCodec:执行JPEG图像编码的类。 (2)JPEGDecodeParm:对压缩的JPEG数据进行解码的类。 (3)JPEGENcondeParam:生成JPEG数据流的压缩编码类,并对其实例化后的对象设置压缩的品质系统。其品质系统对压缩后生成图像的质量有很大影响,品质系数越小,压缩率越高,图像质量越差。反之,品质系数越大,压缩率越低,图像质量越好1。 (4)JPEGImageDecder:从一个输入流InputStream中将压缩了的JPEG图像压到图像换冲区BufferedImage中。 (5)JPEGImageEncoer:压缩图像为JPEG数据流并将其写入到一个输出流OutStream。3.2获取屏幕的分辨率 用Toolkit类的getScreenSize()方法来的到屏幕的分辨率(即屏幕图像的大小) Dimension screen =Toolkit.getDefaultToolkit().get-ScreenSize(); 然后,用下面的语句获取应用程序窗体的大小:Dimension a =frame.getSize(); 其中,setLocation()是frame类继承其父类Component确定容器位置的方法。3.3关于“机器人”Robot类时时监控桌面的方法 “机器人”Robot类是用于产生与本地操作系统有关的底层输入自动控制应用程序运行的。这里应用了由“机器人”Robot类时时监控桌面的方法: /创建一个机器人 Robot robot = new Robot(); 其中,robot是Robot实例化的对象。4系统结构设计4.1系统总体结构 应用程序体系结构是指应用程序内部各组件间的组织方式,目前比较流行的大体上分为两种:客户机/服务器(Client/Sever,简称C/S)2结构和浏览器/服务器(Browser/Server,简称B/S)结构。C/S结构是将数据库内容放在远程的服务器上,在客户机上安装相应软件,是一种两层或三层结构的系统。与B/S结构相比,C/S结构具有以下优势: (1)所有数据都在服务端进行管理,保证了数据的完整性、 可靠性、安全性和易维护性。(2) 客户端有一套完整的应用程序,再出错提示、在线帮助等方面有强大的功能: 对于相同的任务,C/S模版速度大于B/S模式;网络只传输查询结果的信息,大大减轻了网络的负担,数据通信量小。屏幕监控系统是一个远程客户机/服务器系统,程序分为服务器端和客户端两部分。其总体结构如图4.1所示。图4.1 系统总体结构4.2 服务器端程序功能与结构 服务器端程序主要具有以下两个功能:(1)发送自己的屏幕图像;(2)接收客户端传来的控制命令,并执行相应的操作。其结构如图4.2所示。图4.2 接受客户端命令,执行相应操作4.3客户端程序功能与结构 客户端程序主要是接收被控电脑(服务器端)传来的屏幕图像,向被控电脑发送鼠标操作或键盘操作指令。其结构如图4.3所示。图4.3 客户端程序结构5课程设计内容 服务器端程序所用的方法及其功能如表5.1所示。其中,发送屏幕图像方法sendScreen()的工作过程如图5.1所示。表5.1 服务器端程序所用的方法及其功能方法名功能说明main()主函数,建立窗口并安排界面布局ServerTest()构造函数,建立UDP数据报对象sendScreen()按UDP协议发送压缩的屏幕图像数据包run()接收和执行控制命令图5.1 sendScreen()工作过程 /矩形区域的大小 Rectangle rec = new Rectangle(dm); Robot robot = new Robot(); while(true) BufferedImage bufImg = robot.createScreenCapture(rec); ByteArrayOutputStream baos =new ByteArrayOutputStream(); /压缩 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(baos); encoder.encode(bufImg); byte data =baos.toByteArray(); dataOut.writeInt(data.length); dataOut.write(data); dataOut.flush(); Thread.sleep(0); catch(Exception e)e.printStackTrace(); Robot是使“机器人”自动的始终监控远程控制者发来的控制指令数据包3,并实现图片的压缩和打包功能。 客户端程序所用的方法及其功能如表5.2所示,方法调用关系如图5.2所示。表5.2 客户端程序所用的方法及其功能方法名功能方法main()主函数,建立输入被控端IP地址的窗口及显示被控端屏幕图窗口,并设置键盘监听ClientTest()构造方法,设置传送UDP数据报指令的参数,定义向被控端发出截取屏幕图像指令的线程,定义监听鼠标事件dataOut()接收被控端传来的屏幕图像数据getScreen()将接收到的屏幕图像进行解压,还原成图像ImageIcon()绘制被控端的屏幕图像图5.2 方法调用关系 其中,还原屏幕图像方法/还原屏幕图像防范ImageIcon() int len =dis.readInt() ; byte imageData =new bytelen; dis.readFully(imageData); ImageIcon image =new ImageIcon(imageData); backImage.setIcon(image);6程序设计6.1 Client程序设计及注释public class Client private static Component scrollPane;/* * 远程协助系统学生端 * param args * author 旺东 */Public static void main(String args) try/是否控制对方电脑确认框int i= JOptionPane.showConfirmDialog(null, "请求控制对方电脑", "远程协助系统-小东",JOptionPane.YES_NO_CANCEL_OPTION );/如果点击了取消 if(i=JOptionPane.NO_OPTION) return; /如果点击了确定show input String input = JOptionPane.showInputDialog("请输入要连接的服务 器(包括端口号):", "127.0.0.1:10000"); /获取服务器主机 String host = input.substring(0,input.indexOf(":"); /获取端口号 String port = input.substring(input.indexOf(":")+1); System.out.println("服务器的主机:" +host+ " 端口号:" +port); /连接服务器 Socket client =new Socket(host,Integer.parseInt(port); DataInputStream dis =new DataInputStream(client.getInputStream(); /创建面板 JFrame jframe =new JFrame(); jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jframe.setTitle("远程协助系统-小东"); jframe.setSize(1024, 768); /读取服务器的屏幕的分辨率 double height =dis.readDouble(); double width =dis.readDouble(); Dimension ds = new Dimension(int)width,(int)height); /设置 jframe.setSize(ds); /将服务器作为我们的背景 JLabel backImage =new JLabel(); JPanel panel =new JPanel(); /需要滚动条 JScrollPane scrollPane =new JScrollPane(panel); panel.setLayout(new FlowLayout(); panel.add(backImage); jframe.add(scrollPane); jframe.setAlwaysOnTop(true); jframe.setVisible(true); while(true) int len =dis.readInt() ; byte imageData =new bytelen; dis.readFully(imageData); ImageIcon image =new ImageIcon(imageData); backImage.setIcon(image); /从新绘制新的面板 jframe.repaint(); catch(Exception e)e.printStackTrace();6.2 Server程序设计及注释Public class Server /* * author 旺东 * 远程协助的教师端 * param args */Public static void main(String args) try/建立服务器监听10000 ServerSocket ss = new ServerSocket(10000);While(true) System.out.println("正在连接."); /等待连接 Socket client = ss.accept(); System.out.println("连接成功."); /通过socket获取输出流 OutputStream os = client.getOutputStream(); /转换至二进制的流 DataOutputStream doc = new DataOutputStream(os); ScreenThread screenThread = new ScreenThread(doc); /启动线程 screenThread.start(); catch(Exception e)e.printStackTrace(); class ScreenThread extends Thread /数据的输出流 priate DataOutputStream dataOut; Public ScreenThread(DataOutputStream dataOut) this.dataOut = dataOut; /启动线程 开始传输 Public void run() Toolkit tk = Toolkit.getDefaultToolkit(); Dimension dm = tk.getScreenSize(); try /获取教师端的分辨率 发给学生段 dataOut.writeDouble(dm.getHeight(); dataOut.writeDouble(dm.getWidth(); dataOut.flush(); /矩形区域的大小 Rectangle rec = new Rectangle(dm); Robot robot = new Robot(); While(true) BufferedImage bufImg = robot.createScreenCapture(rec); ByteArrayOutputStream baos =new ByteArrayOutputStream(); /压缩 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(baos); encoder.encode(bufImg); byte data =baos.toByteArray(); dataOut.writeInt(data.length); dataOut.write(data); dataOut.flush(); Thread.sleep(0); catch(Exception e)e.printStackTrace(); 7设计结果及成果展示 窗口提示如图7.1,提示要监控的IP端如图7.2,监控屏幕效果展示如图7.3,控制屏幕显示如图7.4.图7.1 窗口提示图7.2 提示要监控的IP端图7.3 监控屏幕效果展示图7.4 控制屏幕显示对于本次课程设计的成果,由于时间关系,同时也存在一些功能上的不完善,比如本地屏幕监控系统中存在不能实现全屏监控,远程监控在连接其他服务器时不能过获得对方的权限,总体来说,本次课程设计的意义重大,让我领悟了Java编程的主题思想和方法技巧,对我的学习是一种提高。8 设计总结 采用先进的Java技术设计的远程屏幕监控系统,功能全面实用,可以实现很多的远程控制功能,如获取目标电脑屏幕图像、窗口及进程列表,可以打开、关闭目标电脑的任意目录并实现资源共享,激活、中止远端程序进程,管理远端电脑的文件和文件夹,关闭或者重新启动远程电脑中的操作系统,修改Windows注册表等。经测试系统运行良好。 参考文献1孙宇霞,王健.Java编程从基础到应用.M.北京:清华大学出版社,2014.2陈骞,罗智佳,毛宗源.基于C/S和B/S混合结构的数据采集与整合系统J.计算机应用研究,2006,23(7):188-190.3殷兆麟,沈琦,姜秀柱,等.Java语言程序设计M.北京:高等教育出版社,2002.