您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 基于java的远程操控系统
《Java》课程设计报告书课题名称基于Java的开发远程协助监控系统的设计姓名曾旺东学号1312402-17学院通信与电子工程学院专业通信工程指导教师肖湘讲师2015年07月09日※※※※※※※※※※※※※※※※※※※※※※※※2013级学生java课程设计1一、设计任务及要求:设计目的(1)学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全过程。(2)进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计、Java多线程编程、Applet程序的设计、文件和网络输入输出流编程、Java数据库编程等。(3)通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。设计要求(1)问题的描述与程序将要实现的具体功能。(2)程序功能实现的具体设计思路或框架,并检查流程设计。(3)代码实现。(4)程序测试(如程序代码、功能测试、可靠性测试和效率测试等)。指导教师签名:年月日二、指导教师评语:指导教师签名:年月日三、成绩验收盖章年月日2基于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()方法来的到屏幕的分辨率(即屏幕图像的大小)3Dimensionscreen=Toolkit.getDefaultToolkit().get-ScreenSize();然后,用下面的语句获取应用程序窗体的大小:Dimensiona=frame.getSize();其中,setLocation()是frame类继承其父类Component确定容器位置的方法。3.3关于“机器人”Robot类时时监控桌面的方法“机器人”Robot类是用于产生与本地操作系统有关的底层输入自动控制应用程序运行的。这里应用了由“机器人”Robot类时时监控桌面的方法://创建一个机器人Robotrobot=newRobot();其中,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服务端截屏图像流JPEG压缩UDP方式协议传输客户端图像显示图像流JPEG解码接受控制命令并执行相应操作发送控制命令图4.1系统总体结构4.2服务器端程序功能与结构服务器端程序主要具有以下两个功能:(1)发送自己的屏幕图像;(2)接收客户端传来的控制命令,并执行相应的操作。其结构如图4.2所示。主函数Main()建立窗口调用程序阻塞方式,侦听端口读取网络传来的控制命令捕捉屏幕图像,保存为JPEG类型压缩后,发送到网络图4.2接受客户端命令,执行相应操作54.3客户端程序功能与结构客户端程序主要是接收被控电脑(服务器端)传来的屏幕图像,向被控电脑发送鼠标操作或键盘操作指令。其结构如图4.3所示。制定被控电脑IP地调用构造函数ClientCtrl(),启动控制指令线程发送控制指令,引发被控制电脑鼠标、键盘的动作接收和显示被控制电脑的屏幕图像图4.3客户端程序结构5课程设计内容服务器端程序所用的方法及其功能如表5.1所示。其中,发送屏幕图像方法sendScreen()的工作过程如图5.1所示。表5.1服务器端程序所用的方法及其功能方法名功能说明main()主函数,建立窗口并安排界面布局ServerTest()构造函数,建立UDP数据报对象sendScreen()按UDP协议发送压缩的屏幕图像数据包run()接收和执行控制命令6抓取屏幕图像到缓冲区建立字节数组输出流将图像数据压缩为JPEG类型的数据把JPEG图像数据转到输出流将数据输出流打包按UDP协议发送数据包图5.1sendScreen()工作过程//矩形区域的大小Rectanglerec=newRectangle(dm);Robotrobot=newRobot();while(true){BufferedImagebufImg=robot.createScreenCapture(rec);ByteArrayOutputStreambaos=newByteArrayOutputStream();//压缩JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(baos);encoder.encode(bufImg);byte[]data=baos.toByteArray();dataOut.writeInt(data.length);dataOut.write(data);dataOut.flush();7Thread.sleep(0);}}catch(Exceptione){e.printStackTrace();}Robot是使“机器人”自动的始终监控远程控制者发来的控制指令数据包[3],并实现图片的压缩和打包功能。客户端程序所用的方法及其功能如表5.2所示,方法调用关系如图5.2所示。表5.2客户端程序所用的方法及其功能方法名功能方法main()主函数,建立输入被控端IP地址的窗口及显示被控端屏幕图窗口,并设置键盘监听ClientTest()构造方法,设置传送UDP数据报指令的参数,定义向被控端发出截取屏幕图像指令的线程,定义监听鼠标事件dataOut()接收被控端传来的屏幕图像数据getScreen()将接收到的屏幕图像进行解压,还原成图像ImageIcon()绘制被控端的屏幕图像Main()Server()Client()getScreenImageIcon()Server类图5.2方法调用关系其中,还原屏幕图像方法//还原屏幕图像防范ImageIcon()8intlen=dis.readInt();byte[]imageData=newbyte[len];dis.readFully(imageData);ImageIconimage=newImageIcon(imageData);backImage.setIcon(image);6程序设计6.1Client程序设计及注释publicclassClient{privatestaticComponentscrollPane;/***远程协助系统学生端*@paramargs*@author旺东*/Publicstaticvoidmain(String[]args){try{//是否控制对方电脑确认框inti=JOptionPane.showConfirmDialog(null,请求控制对方电脑,远程协助系统-小东,JOptionPane.YES_NO_CANCEL_OPTION);//如果点击了取消if(i==JOptionPane.NO_OPTION){return;}//如果点击了确定showinputStringinput=JOptionPane.showInputDialog(请输入要连接的服务器(包括端口号):,127.0.0.1:10000);//获取服务器主机Stringhost=input.substring(0,input.indexOf(:));//获取端口号9Stringport=input.substring(input.indexOf(:)+1);System.out.println(服务器的主机:+host+端口号:+port);//连接服务器Socketclient=newSocket(host,Integer.parseInt(port));DataInputStreamdis=newDataInputStream(client.getInputStream());//创建面板JFramejframe=newJFrame();jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jframe.setTitle(远程协助系统-小东);jframe.setSize(1024,768);//读取服务器的屏幕的分辨率doubleheight=dis.readDouble();doublewidth=dis.readDouble();Dimensionds=newDimension((int)width,(int)height);//设置jframe.setSize(ds);//将服务器作为我们的背景JLabelbackImage=newJLabel();JPanelpanel=newJPanel();//需要滚动条JScrollPanescrollPane=newJScrollPane(panel);panel.setLayout(newFlowLayout());panel.add(backImage);jframe.add(scrollPane);jframe.setAlwaysOnTop(true);jframe.setVisible(true);while(true){intlen=dis.readInt();byte[]imageData=newbyte[len];dis.readFully(imageData);10ImageIconimage=newImageIcon(imageData);backImage.setIcon(image);//从新绘制新的面板jframe.repaint();}}catch(Exceptione){e.printStackTrace();}}}6.2Server程序设计及注释PublicclassServer{/***@author旺东*远程协助的教师端*@paramargs*/Publicstaticvoidmain(String[]args){try{//建立服务器监听10000ServerSocketss=newServerSocket(10000);While
本文标题:基于java的远程操控系统
链接地址:https://www.777doc.com/doc-2534190 .html