【基于Java手机远程协助软件的设计(论文)9900字】_第1页
【基于Java手机远程协助软件的设计(论文)9900字】_第2页
【基于Java手机远程协助软件的设计(论文)9900字】_第3页
【基于Java手机远程协助软件的设计(论文)9900字】_第4页
【基于Java手机远程协助软件的设计(论文)9900字】_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

基于Java手机远程协助软件的设计摘要:随着现今社会计算机的广泛普及以及网络的快速发展给远程控制系统带来了广阔的用武之地,人们可以通过简单的终端机完全的控制网络另一端的被控机,从而完成强大的控制功能。如今网络技术飞速发展,网络中主机使用的操作系统都存在有远程控制功能,远程控制给人们生活提供了极大的便利。但是在目前市场上大多是Windows与Windows端,Windows与Android端实现远程控制,而日常生活中大家都是手机不离手,缺乏Android与Android端软件。因此日常生活中迫切需要一款能够实现Android与Android端的应用软件来为人们日常生活带来更大便利。实现Android与Android端远程控制,帮助长辈灵活使用智能手机,同时也可以使用安卓手机控制异地另外一台手机,如开关闹钟,关闭正在使用的应用等等,家长也可以使用远程控制帮助孩子们更加合理使用手机,为人们日常生活带来更多便利,节约打开电脑所耗费的时间空间。关键词:Java;android;远程协助;客户端;服务器目录TOC\o"1-3"\f\t"样式宋体小四行距:固定值20磅,1"\h7851绪论 1277271.1研究背景 1210291.2研究现状 29912相关理论及技术背景 4115652.1Java语言 4320662.2安卓系统 5211742.1.2安卓应用开发 7174562.2远程控制原理和技术 944702.2.1基于C/S结构的远程控制技术 979272.2.2基于B/S架构的远程控制技术 10182153系统分析与设计 1226693.1系统总体结构设计 12172203.2系统逻辑流程 13118304系统实现方法与技术 1552934.1通信模块实现 15297754.2系统屏幕画面传输的实现 16167706总结与展望 2126125参考文献 221绪论1.1研究背景安卓是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。Android操作系统最初由AndyRubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机、智能手表等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。Android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。远程控制是指管理人员在异地通过计算机网络异地拨号或双方都接入Internet等手段,连通需被控制的计算机,将被控计算机的桌面环境显示到自己的计算机上,通过本地计算机对远方计算机进行配置、软件安装程序、修改等工作。远程控制通常通过网络才能进行。位于本地的计算机是操纵指令的发出端,称为主控端或客户端,非本地的被控计算机叫做被控端或服务器端。远"程"不等同于远"距离",主控端和被控端可以是位于同一局域网的同一房间中,也可以是连入Internet的处在任何位置的两台或多台计算机。早期的远程控制往往指在局域网中的远程控制而言,随着互联网和技术革新,就如同坐在被控端电脑的屏幕前一样,可以启动被控端电脑的应用程序,可以使用或窃取被控端电脑的文件资料,甚至可以利用被控端电脑的外部打印设备(打印机)和通信设备(调制解调器或者专线等)来进行打印和访问外网和内网,就像利用遥控器遥控电视的音量、变换频道或者开关电视机一样。早期的远程控制大部分指的是电脑桌面控制,而后的远程控制可以使用手机、电脑控联网的灯、窗帘、电视机、摄像机、投影机、指挥中心、大型会议室等。1.2研究现状Android平台海量的用户群体、开放的源码及其丰富的应用资源,使得国内外对其开展了大量研究,主要集中在Android平台的操作系统框架、应用程序、内核定制等方面。远程控制技术非常成熟。主流的远程控制方法有四种,第一种是基于C/S架构的web远程控制方法。C/S架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据;另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信。C/S架构也可以看做是客户端架构。因为客户端需要实现绝大多数的业务逻辑和界面展示。这种架构中,作为客户端的部分需要承受很大的压力,因为显示逻辑和事务处理都包含在其中,通过与数据库的交互(通常是SQL或存储过程的实现)来达到持久化数据,以此满足实际项目的需要。另一种是B/S架构的Web远程控制方法,并用Java进行了编程实现。B/S架构的全称为Browser/Server,即浏览器/服务器结构。Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现,Browser客户端,WebApp服务器端和DB端构成所谓的三层架构。B/S架构的系统无须特别安装,只有Web浏览器即可。B/S架构中,显示逻辑交给了Web浏览器,事务处理逻辑在放在了WebApp上,这样就避免了庞大的胖客户端,减少了客户端的压力。因为客户端包含的逻辑很少,因此也被成为瘦客户端。第三种结合C/S架构与B/S架构的特点设计了一种基于GPRS和Internet网络的远程分布式控制系统。最后一种是以单片机为微控制核心实现了IPv4和TD-SCDMA协议的通信,构建了基于TD-SCDMA协议的远程控制方法。截至目前,我国市场上已经有相关成果出现,如向日葵,以及华为公司推出的“亲情关怀”。亲情关怀需要使用华为账号登录,可通过网络拨打电话或者以发送短信的方式进行实现,远程协助的功能具体体现在“请求帮助”(请求对方远程控制你的手机),“提供帮助”(请求远程控制对方手机)两个核心选项上。另外重要的一点:亲情关怀虽然可以安装在市场上所有Android手机上,但是只有华为品牌的手机才可以使用此功能。2相关理论及技术背景2.1Java语言Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。Java工作原理由四方面组成:1.Java编程语言2.Java类文件格式3.Java虚拟机4.Java应用程序接口

当编辑并运行一个Java程序时,需要同时涉及到这四种方面。使用文字编辑软件或集成开发环境在Java源文件中定义不同的类,通过调用类中的方法来访问资源系统,把源文件编译生成一种二进制中间码,存储在class文件中,然后再通过运行与操作系统平台环境相对应的Java虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的JavaAPI调用。如图2-1所示。图2-1Java工作原理2.2安卓系统

2.1.1安卓系统结构Android操作系统框架,由顶到底可分为:应用层、应用框架层、系统运行库层、Linux内核层四部分,如图2-2所示。图2-2Android操作系统框架安卓系统一些基本的系统功能如对系统文件的管理、对系统进程的管理、对系统内存的管理、用户管理以及进程间的通信等功能都是通过Linux内核来完成的。智能手机现在大多有摄像头、操控屏等硬件设备,Linux内核层还为这些硬件提供了运行所必须的各种驱动程序。这一层向上提供的接口是硬件抽象层(HAL),利用该规范各手机厂商可以根据自己的硬件特点制造出不同的硬件驱动程序,并依赖该接口对上一层进行支持,这一过程就是所说的系统移植。安卓系统库里存储了大量的系统函数和组件存储在系统运行库层,该层在系统运行过程中可以被上一层所调,如标准C库Libc、浏览器引擎Webkit,安卓数据库管理系统SQLite、图像处理OpenGL等。安卓系统运行的虚拟机称作Dalvik虚拟机,它非常类似于Java虚拟机JVM,但并不是真正的JVM。JVM的垃圾回收机制并不适用于移动设备,因为移动终端存在低能耗、低资源的瓶颈,而JVM在运行速度、资源占用等方面难以满足移动终端硬件的苛刻要求,因此,安卓系统将能够达到以上性能要求的Dalvik虚拟机作为运行虚拟机。应用框架层这一层体现了安卓系统对移动设备应用程序的理解。它隐藏了系统中进程、内存管理等概念;针对不同应用需求抽象出活动(Activity)、服务((Service)、内容提供者(Contentprovider)、广播接收器(Broadcastreceiver)的概念组件;这些组件是构成应用程序的基本要素,一些基本的常用功能如手机的通话、资源的分配和管理、窗口切换、软件的安装与卸载、手机定位等功能的实现。这一层向上提供了Java形式的安卓应用程序开发的框架与接口。应用层是安卓操作系统框架的最高层,软件开发者通过Java语言和下层框架接口,在安卓平台开发各类特色应用。2.1.2安卓应用开发1.安卓应用程序结构安卓程序包括以下四部分:(1)Activity(2)BroadcastIntentReceiver(3)Server(4)ContentProviderActivity,一般代表手机屏幕的一屏,相当于浏览器的一个页面。在Activity中添加view,实现应用界面和用户交互。一个应用程序一般由多个Activity构成,这些Activity之间可互相跳转,可进行页面间的数据传递。每个Activity都有自己的生命周期。IntentReceiver,Intent是一次对将要执行的操作的抽象描述。通过Intent,可实现Activity与Activity之间的跳转。Intent最重要的组成部分是Intent的动作(Action)和动作对应的数据(data)。与Intent相关的一个类叫IntentFilters。它用来描述Intent能够用来处理哪些操作。BroadcastIntentReceiver,用于响应外部事件。BroadcastReceiver不能生成UI,所以对用户来说是不可见的。Service,运行在后台的应用程序。ContentProvider:一个ContentProvider提供了一组标准的接口,从而能够让应用程序保存或读取ContentProvider的各种数据类型。一个应用程序可通过它将自己的数据暴露出去。对于外界的应用程序来说,它不需要关心这些数据的存储方式,存储地方,只需要通过ContentProvide提供的r接口访问这些数据即可。当然这涉及到数据访问的权限问题。Android应用程序主要使用Java语言开发,Google为开发人员提供了AndroidSDK应用程序开发工具包,同时还提供了AndroidNDKC/C++应用程序开发工具以满足开发人员的需要。在Android中应用层与应用框架层都属于Java代码层,而系统运行库以及内核都是由C/C++实现的,Java层与C/C++通过JNI接口进行交互,使得上层Java程序可以调用底层C/C++函数库,如图所示。有了AndroidNDK和JNI接口,用户就可以使用C/C++语言进行Android应用程序的开发了。编写好的Android应用程序源码经过编译后打包形成一个单独的“.apk”文件。“.apk”文件是Android平台上的应用程序安装文件,其中包含了应用程序的二进制代码、资源文件、配置文件等。2.Android应用程序开发环境Android应用程序的开发目前普遍使用Eclipse+ADT+AndroidSDK的方式。Eclipse是一个基于Java的集成开发平台,其附带了一个标准的插件集,包括Java开发工具。ADT是在Eclipse中开发Android应用程序的工具插件,为Android开发提供开发工具的升级或者变更。AndroidSDK是Google推出的Android软件开发工具包,为开发者提供了库文件以及其它开发所用到的工具。如图2-3所示。图2-3Android应用程序结构2.2远程控制原理和技术2.2.1基于C/S结构的远程控制技术C/S结构,即客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。Client和Server常常分别处在相距很远的两台计算机上,Client程序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;Server程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。这种模式如图2-4所示。图2-4C/S模式工作流程请求客户端服务器请求客户端服务器响应响应传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。C/S结构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工完成,即采用“功能分布”原则。客户端完成数据处理,数据表示以及用户接口功能;服务器端完成DBMS的核心功能。这种客户请求服务、服务器提供服务的处理方式是一种新型的计算机应用模式。C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。具体表现在以下两点:1.应用服务器运行数据负荷较轻。最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。2.数据的储存管理功能较为透明。在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,并且通常把那些不同的(不管是已知还是未知的)前台应用所不能违反的规则,在服务器程序中集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非常“瘦小”,麻烦的事情都交给了服务器和网络。在C/S体系下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。2.2.2基于B/S架构的远程控制技术B/S架构即浏览器和服务器架构模式。它是随着Internet技术的兴起,对C/S架构的一种变化或者改进的架构。在这种架构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。B/S架构是WEB兴起后的一种网络架构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser),如NetscapeNavigator或InternetExplorer,服务器安装Oracle、Sybase、Informix或SQLServer等数据库。浏览器通过WebServer同数据库进行数据交互。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本如图2-5所示。图2-5B/S技术工作流程B/S模型利用现在不断成熟和普及的浏览器技术实现了原来需要复杂、专用软件才能实现的强大功能,并大大节约了开发成本,是一种全新的软件系统构造技术。此外,在B/S架构下,只要安装有浏览器就可以随时随地的进行远程控制,不再局限于专用的客户端,极大的提高了远程控制工具的灵活性。但是,正是因为B/S的灵活性,导致了其对安全的控制能力与C/S相比较为薄弱。C/S通常面向较为固定的用户,且必须安装客户端程序,才可以进行远程控制,系统相对封闭,这就提高了其对安全的控制能力,因此对信息安全具有较高要求的远程控制工具一般采用C/S架构。3系统分析与设计3.1系统总体结构设计本系统设计的方案为C/S模式,在主控端设备上安装服务器端程序,在被监控端电脑上安装客户端程序。该系统的控制过程是先在主控端设备上执行服务器程序,在命令收发过程中,主控端向被监控端配置的UDP端口发送命令,该命令是一个控制命令,要求被监控端来连接其开启的TCP端口和要求被监控端执行的操作,如果被监控端监听到该UDP命令,主动开启TCP端口向主控端发送连接请求。这样就建立了一个特殊的远程服务,然后通过这个远程服务,主控端使用各种远程控制功能发送远程控制命令,控制被监控端电脑中的各种应用程序运行。如图3-1所示。图3-1终端设备结构将软件功能分解到通信的两个端点上,即客户端和服务器端,采用Client/Server模式。这样能提高设计的灵活性,易于系统的扩展。被监控端接受主控端命令,并处理命令,然后输出命令处理结果;主控端则提供交互界面及命令处理结果显示;数据交换通道的建立由双方的数据通信模块负责。从而实现点到点的直接控制监控,满足实时性要求。主控端包括的模块有:消息输入,命令处理结果显示模块,通信模块。消息输入模块负责将用户界面的事件传送到通信模块,通信模块将命令信息发送到被监控端;被监控端执行操作后返回的成功或失败信息交由主控端命令处理结果显示模块根据信息的格式进行显示。被监控端包括的模块有:通信模块,命令处理模块。被监控端处于侦听状态,一旦接收到合法的连接请求,就开UDP端口,并开启命令接受线程,建立连接后,通过通信模块接收主控端发来的命令信息,经命令处理模块解释后,并将结果返回到主控端。3.2系统逻辑流程在被监控端安装客户端程序,程序启动的时候,尝试开启UDP端口,如果防火墙或者杀毒软件阻止,尝试开启配置的其它UDP端口,如果都尝试完毕,启动失败。否则,将开启的UDP套接字传入,然后开启命令接收线程,目的是进行命令获取,并对获取的命令进行处理。然后将自己复制到自启动项,并改名为Explorer.jar。在主控端安装服务器程序,主控端首先启动其控制窗口类,初始化图形在主控端安装服务器程序,主控端首先启动其控制窗口类,初始化图形显示,然后用户输入被监控端的IP地址。接着主控端开启任意TCP端口,并向该IP配置的UDP端口发送初始化命令(命令格式为ordername:port),ordername为命令名字,port为主控端打开的TCP端口号。主控端对开启的TCP端口进行监听,如果超时,连接失败。否则,主控端读取被监控端的状态对象,接着启动控制模块和屏幕监视模块。被监控端UDP端口启动成功后,就开始对该UDP端口进行监听,如果监听到有命令,就读取它,并判断命令是否有效,命令以ordername:port为格式,如果无效,返回继续读取命令,否则,调用相应的命令处理模块对命令进行处理,命令处理完后将处理结果返回给主控端。主控端开启任意TCP端口,向被监控端的UDP端口发送“要求被监控端连接”的UDP命令,命令形式为screen:TCPPort。如果命令超时,命令执行失败,否则,如果被监视端来连接,生成Soket对象,从Soket中读取被监视端发送过来的图形对象,并将图象显示在画布上,每隔一定时间(若干秒),重新读取图象,更新画布显示,从而实现连续获得对方屏幕变化。 被监控端收到主控端的UDP命令:control:TCPPort,获得主控端开放的TCP端口号。成功连接主控端的TCP端口后,并从中读取事件对象,接着对事件对象进行类型判断并重演。接着判定控制套接是否关闭,如果关闭,控制结束。否则返回继续读取事件。4系统实现方法与技术4.1通信模块实现1.Socket编程数据通信模块中的数据通道建立采用Socket编程。Socket支持TCP/IP协议网络通信的基本操作;它屏蔽了网络底层的通信细节,使编程简单;它对通信端点进行了抽象,提供发送和接收数据机制及打开、计算和关闭会话的能力。本项目中,客户端和服务器代表运行在Windows操作平台下,采用JavaSocket来编程实现命令和数据信息的传输。2.通信建立服务器与客户端开始都必须调用socket()函数产生一个Socket套接字。由于让被监控端开TCP端口,很容易被防火墙和杀毒软件阻止,监控就难以完成。这里,我们在主控端开TCP端口,等待被监控端来主动连接,这样监控功能就能更顺利的开始。主控端首先创建一个ServerSocket对象,然后调用ServerSocket的方法accept实现监听。如果被监控端来访问,accept会返回一个socket对象,利用这个对象就可以很轻松的完成服务器和客户端的数据交换。只有被监控端有请求时才建立连接,建立连接后,客户端与服务器之间便可以双向传输数据。当得到socket对象后,主控端建立ObjectInputStream对象,被监控端建立ObjectOutputStream对象实现消息的接收和发送。完成通信后,调用ServerSocket和socket对象的close关闭套接字,结束通信。主控端主要通信代码:ServerSocketserver=NewRadomSocket.openNewPort();//开启新端口Socketsocket=null;server.setSoTimeout(Parameter.TCP_TIME_OUT);//设置超时socket=server.accept();//开启ObjectInputStreamreadin=newObjectInputStream(socket.getInputStream());//封装流,准备读取一个对象socket.close();//关闭socket,结束通信被监控端主要通信代码:Socketsocket=newSocket(serverip,serverport);ObjectOutputStreamsend=newObjectOutputStream(socket.getOutputStream());//封装流send.writeObject(cc);//发送send.close();//关闭流socket.close();//关闭套接4.2系统屏幕画面传输的实现在Java远程监控过程中,我们要截取软件运行GUI界面,并将其保存到一个或一系列图像文件中。目前,在Windows平台下,有关屏幕截取的工具软件有许多,比如:HyperCam等,当然还可以直接利用Windows操作系统支持的屏幕拷贝PrintScreen键,将屏幕拷贝到剪贴板,在保存为图像文件。这些工具软件一定要屏幕截取者,在操作过程中要"精力集中"并且"伺机捕获"所需要的软件运行界面。事实上,有时候我们需要Java应用程序,自动对运行的GUI界面进行"拍照",比如:一台计算机要获取网络上另一台计算机正在运行的GUI界面,要看看对方计算机上软件运行情况。这就需要在Java应用程序中,自动将运行的GUI界面保存到一个图像文件中,然后通过网络传输到另一台计算机上。而上述HyperCam等工具软件无法与我们的Java应用融合为一体。因此,我们需要在Java应用程序中编写一个屏幕"照相机"。"屏幕的截取"是比较接近操作系统底层的操作,在Windows平台下,该操作似乎成了VC、VB等语言开发的专利。事实上,"屏幕的截取"在Java应用程序中,及其简单。在JavaJDK1.5.0中提供了一个"机器人"Robot类。该类用于产生与本地操作系统有关的底层输入、测试应用程序运行或自动控制应用程序运行。Robot类提供了一个方法:.createScreenCapture(..),可以直接将全屏幕或某个屏幕区域的像素拷贝到一个BufferedImage对象中,我们只需要将该对象写入到一个图像文件之中,就完成了屏幕到图像的拷贝过程。为了构造一个比较完善的Java屏幕"照相机",我们构造了一个ImageProviderJavaBean,其源代码和说明如下:/*该JavaBean可以直接在其他Java应用程序中调用,实现屏幕的"拍照"*/publicclassImageProvider{privateRobotrobot=null;//图象采集类privateRectanglerect=null;//要复制的屏幕区域/*构造函数,输入要采集的屏幕的矩形信息*/publicImageProvider()throwsAWTException{rect=newRectangle(Toolkit.getDefaultToolkit().getScreenSize());//要复制的屏幕区域,这里为全屏robot=newRobot();//创建Robot对象}/*复制全屏幕,返回BufferedImage对象*/publicBufferedImageCopyScreen(){BufferedImageimage=robot.createScreenCapture(rect);//截取屏幕,生成BufferedImage对象returnimage;}}实现屏幕监控要完成被监控端发送屏幕截图和主控端接收图片的工作,该功能的实现中构造了两个类:SendImageThread和GetImageThread。SendImageThreadJavaBean代码和说明如下:*被监控端将Java屏幕"照相机"采集到的图片压缩为JPEG文件,发送到主控端*/publicclassSendImageThreadextendsThread{ publicvoidrun(){ inti=0; OutputStreamout=null; JPEGImageEncoderencoder=null;//压缩为JPEG try{out=client.getOutputStream();//获得TCP套接字流 encoder=JPEGCodec.createJPEGEncoder(out);//将流压缩为JPEG对象流 }catch(IOExceptione1){ e1.printStackTrace(); }while(true){ image=impv.CopyScreen();//截取屏幕图象 encoder.encode(image);//向网络写入JPEG图形对象 }}GetImageThreadJavaBean代码和说明如下:/*主控端接收JPEG文件,并在画布上显示*/publicclassGetImageThreadextendsThread{publicvoidrun(){ BufferedImageimage=null;JPEGImageDecoderde=null;InputStreamin=null;try{socket.setReceiveBufferSize(1024);//设置接收缓冲socket.setSoTimeout(60000);//设置TCP过期时间in=socket.getInputStream();//获取套接字输入流de=JPEGCodec.createJPEGDecoder(in);//将输入流封装为JPEG对象流}catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace();}intwrongtime=0;while(true){ wrongtime++; if(wrongtime>=200)break;image=de.decodeAsBufferedImage();//对JPEG对象解码,还原为BufferedIm

温馨提示

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

评论

0/150

提交评论