CP监听,等待远程连接。
(3)远程连接模块:负责进行实际的TCP连接和数据收发。当手机端发出访问信号,一旦服务器端核实接受,就分配新的Socket套接字完成TCP连接进行数据
通信。
(4)指令处理模块:将接收到的操作指令,进行解析处理,分析出要操作的对象及对其相关操作。
(5)数据处理模块:负责将要传输的信息进行压缩并根据自定义的编解码协议封装处理,然后交给远程连接模块进行传输。
为了近一步理解各模块间的协作关系,下面描述一下服务器端程序主要功能模块问的接口定义:
模块名称 输入 输出 指令处理模块 数据流 操作的对象及对其相关操作 远程连接模块 数据流 数据流 数据处理模块 要传输的信息 经处理后可传输的数据流 表2-l 电脑端应用程序模块接口定义
介绍完各个模块的设计后,下面重点介绍一下指令处理模块及其自定义的编解码协议。
指令处理模块的主要功能是将接收到的操作指令,进行解析处理,分析出要操作的对象及对其相关操作。它是先将数据流转化成字符串,然后用indexOf()和substring()方法根据自定义的编解码协议,将字符串分割,提取字符串中的信息。现在先介绍一下自定义的编解码协议的主要内容。
本编解码协议定义了两种信息类型:一种是指令型,用o表示(order);另一种是数据型,用d 表示(data)。下面主要介绍第一种类型的结构。
信息类型o 操作设备 一级操作 二级操作 信息结尾符 end 例如:o\\camera\\picture\\end 这段表示摄像机拍照指令,
o\\camera\\picture\\save\\end 这段表示将拍的照片保存指令。
下面给出编码端和解码端的主要代码:
编码端
String send = null;
String type = null;
String equipment = equipmentnull;
String firstoperate = null;
String secondoperate = null;
.
.
.
send=send+type +"\\"+equipment+"\\"+firstoperate+"\\"+secondoperate+"\\"+"end";
.
.
.
解码端
String incom = null;
String[] cutcom=new String[10];
.
.
.
BufferedReader reader =
new BufferedReader(new InputStreamReader
(socket.getInputStream()));
incom=reader.readLine();
incom.indexOf("\\");
cutcom[0] =incom.substring(0, incom.indexOf("\\"));
incom=incom.substring(incom.indexOf("\\")+1);
.
.
.
以上便是服务器端程序的结构与设计,下面将介绍一下手机端设计。
3.手机端设计
手机端程序将运行在Android智能手机上,用Android自己的编程语言实现。与服务器端介绍方式相似,下面从手机端程序的架构分析,各模块的功能描述,接口定义三方面具体介绍手机端程序设计。然后重点介绍一下Socket管理器的实现和应用。
同样先看一下手机端程序框架:
图2-3 手机端功能模块图
结合上图,在这逐项描述各个模块的功能:
(1)初始化模块:启动应用程序后第一个运行的模块。它负责初始化应用程序的运行状态,获取环境参数,设置全局变量。
(2)连接设置模块:用户设置连接IP地址、端口、登入密码等。
(3)套接字管理器:管理套接字的状态和使用。
(4)远程连接模块:它负责进行实际的网络连接和与服务器端通信。
(5)指令生成模块:负责根据用户的界面操作,产生相应的操作指令并根据自定义的编解码协议封装。
(7)媒体数据显示模块:将处理好的媒体信息在手机上进行显示或播放。
(8)数据处理模块:将远程连接模块收到的信息,进行相应处理将其转化成手机上能显示的信息。
与服务器端介绍方式一样,下面同样描述一下手机端程序主要功能模块间的接口定义:
模块名称 输入 输出 指令生成模块 用户按键 /菜单命令 远程命令 数据流生成模块 命令数据 数据流 远程连接模块 数据流 / 数据包 数据流 / 数据包 数据解包模块 数据包 媒体数据 数据流转换模块 数据流 非媒体数据 表2-2 手机端模块接口定义
介绍完各个模块的设计后,下面重点介绍一下Socket管理器的实现和应用。 套接字管理器主要功能是管理套接字的状态和使用。由于Android平台中没有Socket管理器的功能,为了便于Socket管理,我