功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向Socket发送数据和从Socket接收数据。通话结束后,一方挂起电话机相当于关闭Socket,撤消连接。
在电话系统中,一般用户只能感受到本地电话机和对方电话号码的存在,建立通话的过程,话音传输的过程以及整个电话系统的技术细节对他都是透明的,这也与Socket机制非常相似。Socket利用网间网通信设施实现进程通信,但它对通信设施的细节毫不关心,只要通信设施能提供足够的通信能力,它就满足了。
至此,我们对Socket进行了直观的描述。抽象出来,Socket实质上提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。正如打电话之前,双方必须各自拥有一台电话机一样。在网间网内部,每一个Socket用一个半相关描述:(协议,本地地址,本地端口),一个完整的Socket有一个本地唯一的Socket号,由操作系统分配。最重要的是,Socket是面向客户/服务器模型而设计的,针对客户和服务器程序提供不同的Socket系统调用。客户随机申请一个Socket(相当于一个想打电话的人可以在任何一台入网电话上拨号呼叫),系统为之分配一个Socket号;服务器拥有全局公认的 Socket ,任何客户都可以向它发出连接请求和信息请求(相当于一个被呼叫的电话拥有一个呼叫方知道的电话号码)。"202.120.127.201"时,将通过80端口来呼叫主机上由Web服务软件提供的Socket,与其建 立连接并对话。
在Internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。客户软件将插头插到不同编号的插座,就可以得到不同的服务。
2.2.2 Socket网络通信的工作原理
服务器端的步骤如下。
1、首先,在实用Socket之前,要首先初始化Socket,就是使用AfxSocketInit()函数;
2、在初始化完成以后,就可以建立服务端的Socket,然后使用该Socket开始侦听整个网络中的连接请求;
3、当检测到来自客户端的连接请求时,向客户端发送收到连接请求的信息,并建立与客户端之间的连接。连接的过程中,在MFC的框架中会触发一个前面创建的服务端Socket的消息响应函数OnAccept(),我们将建立的连接的代码放到该响应函数里面,在建立连接的过程中,会产生一个新的Socket,我们使用找个Socket来进行数据的通信;
4、在通信的过程中,服务器端的产生的新的Socket会通过一个消息响应函数OnReceive()来接受到达的数据。数据的发送可以使用Send()来完成;
5、当完成通信后,服务器关闭与客户端的Socket连接。
客户端的步骤如下。
1、同样的,初始化Socket,并建立客户端的Socket,确定要连接的服务器的主机名和端口。
2、发送连接请求到服务器,并等待服务器的回馈信息。
3、连接成功后,与服务器进行数据的交互。
4、数据的读取同服务端一样,也是通过OnReceive()来完成的,数据的发送通过Send()即可。
5、数据处理完毕后,关闭自身的Socket连接。
Socket网络通信的流程图2.5所示:
图2.5 Socket通信流程
3 需求分析
3.1 系统说明
3.1.1 系统名称及说明
本研究开发的系统名为基于Android系统的幻灯片无线播放系统研究,系统需在下Android平台下开发,采用无线通信技术,具有Android截图实现功能和Android客户端与PC服务端实时通信的功能。
3.1.2 系统开发背景
在各种商务场合,PPT演示成为不可缺少的沟通方式,例如客户见面会、商务会谈或私人会务。通过演示PPT文稿,可让对方更清晰直观了解你要表达的意图,增加商务谈判的成功率。
在WIFI局域网下,手机可以和电脑通过Socket通信。手机做服务端,电脑做客户端;而本系统通过一台平板电脑即可实现幻灯片的无线播放功能,并且不需要复杂的布线和连接,使用简单、维护方便。
3.2 系统任务
3.2.1 系统设计要求和目标
开发一套基于Android系统的幻灯片无线播放系统,要求在Android平台下给出详细的设计方案,具有完备的截图功能、客户端与服务端实现Socket网络通信功能,通信方式为Wi-Fi。系统设计要达到如下目标。
1、功能完善,系统要具有完备的截图功能、客户端与服务端实现Socket网络通信功能,各功能的子功能需要完全实现。
2、通用性强,通用性包括两方面,一是程序通用性,便于其他模块调用和系统改进升级,当系统数据量大时可以方便地扩展到多台服务器,二是业务通用性,系统支持的业务以及窗口类型可以由后台配置,以便于业务添加、变更,系统可以支持不同行业的业务。
3、灵活性强,系统可以灵活配置,以适应不同的业务场景。
4、安全性强,系统数据集中管理,只能由服务器程序修改。
3.2.2 系统设计原则
为了构建一个功能完备、高性能的Android系统的幻灯片无线播放系统,需要遵循如下设计原则。
1、充分考虑系统性能,减少数据冗余,充分考虑各实体的构成和各字段的属性,力求最优设计。
2、完整性原则,系统设计保证数据的完整性、准确性,系统功能完备,支持所有功能服务项目,同时便于配置管理、升级。
3、简单性原则,系统程序要求在保证完整性原则的情况下从简设计,系统必须易于使用,学习成本低。
4、在风格方面,应该尽量做到程序结构简单明了,思路条理清晰,功能实用,使系统整体风格趋于统一。
5、在界面上,应该在设计、构思力求巧妙,布局要求合理、简单、明了,达到界面友好的效果。
6、可扩展性,系统要具备良好的可扩展性,有助于系统的维护和升级。整个系统采用松耦合的架构进行设计,降低需求变更后程序修改的代码量。
3.3 系统用户需求分析
3.3.1 系统用户定义及关系
操作方和系统管理方广义上都是为客户方工作的的,下面分别给出三个模块的定义。
客户方:指观看幻灯片播放的观众,系统操作方和系统管理方的对象,客户会观看到由PC服务端所连接到的大屏幕上所显示的幻灯片内容。
操作方:操作Android终端平台,为客户操作幻灯片,会用到系统的登录模块、截图模块。
系统管理方:系统管理方负责系统的Socket网络通信,实时的将Android终端平台所显示的幻灯片内容传输到PC端。
3.4 Android平台技术选型及开发环境
3.4.1 Android平台技术选型
这款软件既然是基于Android平台,所以肯定要Andriod开发平台上强大的技术支持。由于Android主线程发生阻塞后等待5秒后就会显示强制关闭的对话框,所以在发送和接受所截取的幻灯片图片时,考虑用多线程技术。
线程之间有着十分便利的数据共享模式。在不同的进程间,进程的存储空间是相互独立的,要传递参数只能通过通信的方法来进行,这样做不仅浪费了大量的时间,而且便利性不够。但是对于线程来说,在同一进程之下的各个线程数据是共享的,所以其他线程可以直接用另一个线程的数据,这样既省时又方便。当然,这样的数据共享也会带来一些麻烦,比如有时变量代表临界资源,两个线程不能同时修改这个变量,这个也正是编写多线程程序时最需要注意的地方。
3.4.2 Android开发环境搭建
Android通常选用Eclipse作为应用程序开发环境,并为Eclipse编写了专门的ADT插
上一篇:
基于Android的海南风景猜猜看软件的开发与研究
下一篇:
试论APP广告在手机中的应用