APP下载

基于Android的跨平台资源管理系统的研究

2015-01-24朱国魂

电子设计工程 2015年21期
关键词:端口号跨平台服务器端

段 昕,朱国魂

(桂林电子科技大学 电子工程与自动化学院,广西 桂林 541000)

通信技术和高性能芯片技术的发展,使移动设备在无线联网和运算性能方面得到了较大的提升。但移动设备本身存储不足,CPU性能瓶颈依旧是难以跨越的使用障碍。与此同时,PC终端具有存储空间大、运算能力强的优点。无线通信技术,特别是WiFi技术和Android技术的发展为移动设备结合PC终端的优点来解决自身的不足提供了好的平台。如何实现Android平台与PC终端之间的资源共享成为研究的热点。

一些软件在移动终端对PC终端的控制和文件的相互传输方面做了大量的工作,如QQ、RemoteView等。但是它们只是完成了对PC的控制[1-3]或者文件传输[4]等单一的工作,没有充分利用PC终端的资源。针对这种情况,本文提出一种基于Android的跨平台资源利用与管理系统,系统客户端(移动设备)通过WiFi网络[5-6]实现对服务器端(PC终端)实时显示和触屏操作,使用户可以通过移动设备来完成对PC终端大型软件的使用。同时,用户还能通过系统的文件传输模块,来实现所需文件的传递和不急需文件的存储,达到资源共享和合理调配的目的。

1 系统通信流程与总体设计

1.1 系统的通信流程

Android平台支持Java网络编程方式[7-8],因此系统采用Socket工作模式,利用Socket的网络通信接口实现客户端与服务器端的信息交换。Socket通常被称为“套接字”,用于描述IP地址和端口,应用程序通过Socket向网络发送网络请求或应答网络请求来进行信息传递。Socket面向客户/服务器模型而设计,SeverSocket用于服务器端。在连接成功后,通信两端都会产生一个Socket实例,从而在通信的两端形成虚拟链路,两端的程序通过建立的虚拟链路进行通信。

Socket网络通信实现流程如图1所示。首先,服务器端创建ServerSocket对象,指定端口号,等待客户端的连接请求。客户端创建Socket对象,同时也指定主机地址和端口号,并向服务器端发出连接请求。服务器端接收到客户端的连接请求后,建立一条TCP连接,与客户端的Socket对象进行通信。服务器端和客户端分别创建字节输入流和字节输出流,其中,字节输入流用于获取对方发来的数据,字节输出流用于向对方发送数据。当一方决定结束通信时,向对方发送结束信息,另一方接收到结束信息后,双方分别关闭各自的TCP连接。

图1 Socket网络通信流程图Fig.1 The flow chart of Socket network communication

1.2 系统总体设计

系统采用C/S模式体系架构,主要由客户端和服务器端组成,其中,客户端通过IP地址、端口号与服务器建立网络连接,用户向服务器端发送用户命令,用户命令通过无线网络到达服务器端,服务器端接收指令完成相关操作并传递反馈信息到客户端,客户端得到用户所需的结果。

客户端建立在基于Android操作系统的移动设备基础上,采用Eclipse工具下的Android插件进行开发。程序设计主要基于Java语言对其进行实现,并调用了Android的部分API函数库。客户端,作为与用户的交互平台,主要功能包括实现与服务器端的网络连接、显示服务器端屏幕内容完成用户对服务器端的实时操作、实现客户端与服务器端的文件管理和数据交流以及服务器端的关机、重启等,它集中了系统的大部分功能。服务器端位于PC端,主要负责对客户端发送来的命令进行监听以及做出响应。系统总体架构如图2所示。

图3为系统的流程图。如图3所示,当系统启动后,登录界面自动显示上次连接的相关信息,用户如果使用该连接,则直接点击登录即可。如果用户需要创建一个新的连接,则需要输入该新连接所需信息 (包括连接的IP地址、端口号等),信息设置完后,点击“登录”。若连接没有建立成功则反馈连接失败信息,若成功则进入主界面。同时,如果连接成功,则说明该IP地址和端口号的连接为可靠连接,需将其保存起来,以备下次登录使用。连接成功后进入到系统主界面,其由PC交互模块、文件管理模块、重启和关机模块组成。在该界面下,用户可以根据需要选择不同的功能模块。

图2系统总体架构Fig.2 The overall framework of the system

2 系统的实现

由于Android系统支持Java语言进行开发,因此系统完全使用Java语言进行实现。作为系统的核心模块,用户交互事件和文件管理模块成为主要研究对象。用户交互模块主要用于用户与系统之间的信息交流,本模块中有触摸事件、功能按钮监听和用户界面的屏幕显示等功能,可以供用户对系统进行任意操作。文件管理模块主要解决用户对资源的跨平台调用和共享等问题,模块中包括文件的下载、上传等功能,实现了用户对资源的合理调配。

2.1 用户交互事件

图3系统流程图Fig.3 The flow chart of the system

用户交互模块主要为解决客户端对服务器端软件的使用而设计。当用户进入交互模块,开启PC交互线程,与服务器端建立交互连接,服务器端通过Java类库的Robot类的createScreenCapture()方法按时间间隔对PC进行整体截屏。同时使用Graphics2D类的draw Image()方法按客户端屏幕比例和JPG格式对图片进行压缩,再通过I/O流发送至客户端。客户端接收该图片并将其全屏显示,这样,客户就可以通过客户端对服务器端应用进行直观的、实时的操作。

客户端通过使用Android类库的GestureDetector类来识别触摸屏的手势与动作并配合鼠标功能按钮来实现对服务器端的操作。触摸事件主要包括单击事件、双击事件、滑动事件等。分别通过实现GestureDetector类接口On Gesture Listener、OnDoubleTapListener和重写 GestureDetector类内部方法onFing()等来达到目的。用户交互界面同时设置左右鼠标功能按钮区,左部对应于鼠标位置的空间移动和调整,右部对应于鼠标的点击与滑轮功能。

监听到用户的操作信息后,客户端将操作信息的对应指令发送至服务器端,服务器端对这些指令进行甄别,然后通过Robot类相关方法进行响应。用户交互界面如图6所示。

2.2 文件管理

文件管理模块主要用于实现客户端与服务器端文件资源的合理调配共享。该模块分为文件下载管理模块和文件上传管理模块。文件下载模块针对服务器端文件资源的管理,而文件上传管理模块则针对于客户端文件资源的管理。用户需要调用文件资源时,系统开启服务器端文件管理线程,服务器端使用 Java类库的 FileSystemView、DecimalFormat和File等类的相关方法获得服务器端的桌面、文档和磁盘等的相关属性(如名字、已使用的空间及剩余空间等),将其Json解析后,传递给客户端。客户端将服务器端文件信息以列表的形式进行显示。文件下载模块如图4所示。

图4文件下载管理模块Fig.4 The module of file download management

用户下载服务器端文件资源时,系统除了开启下载线程外,还需要在客户端对要下载的文件进行存在性判断。若需下载的文件已经存在,则提示是否继续该文件的传输,是则继续传输,并覆盖原存在的文件,否则取消文件的传输。如果将传输的文件不存在,则对文件类型进行判断,判断其是小文件还是大体积文件或者批量文件。若为小文件,则通过Socket封装的I/O流方法直接进行下载;若为大体积文件,则将文件分成若干大小模块,采用RandomAcessFile类,该类直接继承于 Object类,可以通过 seek(),getFilePointer()等方法操作的指针,方便对数据进行位置标记,写入与读取,实现对文件断点续传;若为批量文件传输则使用多线程技术进行下载。由于文件上传管理模块与文件下载模块实现过程基本相同,此处不再赘述。文件上传管理模块如图5所示。

图5文件上传管理模块Fig.5 The module of file upload management

3 系统测试

在测试环境中,客户端采用操作系统为Android4.0的三星手机,服务器端采用操作系统为Windows8的宏脼E1-571G。客户端通过无线路由器建立的无线局域网络访问服务器,使用预先定义好的端口号和IP地址与服务器进行连接。

图6 PC交互模块Fig.6 The module of PC interaction

图7文件下载模块Fig.7 The module of file download

图8文件上传模块Fig.8 The module of file upload

PC交互模块效果如图6所示。文件下载模块效果如图7所示。文件上传模块效果如图8所示。反复测试表明,在局域网内,所设计的客户端与服务器端之间能够建立快速且稳定的连接,而服务器端也能对客户端的各种命令做出及时且正确的响应。实时画面传输、软件跨平台使用及文件资源的跨平台管理等功能都具有很好的效果。

4 结束语

文中设计并实现了一个基于Android的跨平台资源利用与管理系统。系统利用Socket编程实现了移动设备对PC终端的软件实时操作以及二者之间资源的合理调用和资源的跨平台整合,充分的利用了PC终端运算能力强、存储空间大等优点,解决了移动设备自身存储能力不足和CPU瓶颈等问题。随着信息爆炸时代的到来,移动终端需要处理的数据将越来越大,数据的交换也越来越频繁,将本文设计的系统运用到其中,具有广阔的发展前景。

[1]郭宏志.Android应用开发详解[M].北京:电子工业出版社,2010.

[2]刘莎莎,张哲.基于Android平台的鼠标的设计与实现[J].电子器件,2012,35(1):79-82.LIU Sha-sha,ZHANG Zhe.Design&implementation of cursor based on Android platform[J].Chinese Journal of Electron Devices,2012,35(1):79-82.

[3]耿东久,索岳,陈渝,等.基于Android手机的远程访问和控制系统[J].计算机应用,2011,31(2):559-561,571.GENG Dong-jiu,SUO Yue,CHEN Yu,et al.Design&Implementation of Android phone based access and control in smart space[J].Journal of Computer Applications, 2011,31(2):559-561,571.

[4]苗振兴,马幼鸣,周鸣争.基于Android平台的鼠标的WiFi文件传输系统的设计[J].长江大学学报,2013,7(10):17-20.MIAO Zhen-xing,MA You-ming,ZHOU Ming-zheng.Design of cursor WIFI file transfer system based on android platform[J].Journal of Yangtze University,2013,7(10):17-20.

[5]彭海深.基于WIFI的企业网信息安全研究[J].科技通报,2012,28(8):145-147.PENG Hai-shen.Research of enterprise network information security on WIFI[J].Bulletin of Scienceand Technology,2012,28(8):145-147.

[6]吴明,董灏曦.WIFI技术在家庭无线网络中的应用[J].无线互联科技,2012(2):11.WU Ming,DONG Hao-xi.Application of WIFI technology in home wireless network[J].Wireless Internet Technology,2012(2):11.

[7]梁普选.Java程序设计与网络编程[M].北京:清华大学出版社,2007.

[8]陈文,郭依正.深入理解Android网络编程:技术详解与最佳实践[M].北京:机械工业出版社,2013.

猜你喜欢

端口号跨平台服务器端
跨层级网络、跨架构、跨平台的数据共享交换关键技术研究与系统建设
一款游戏怎么挣到全平台的钱?
Linux环境下基于Socket的数据传输软件设计
在Docker容器中安装应用程序
跨平台APEX接口组件的设计与实现
浅谈以java为基础的Socket通信简介及实现
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用
基于B/S的跨平台用户界面可配置算法研究