当前位置:文档之家› 基于Windows Embeded CE 6.0的GPRS短信邮箱的设计与实现

基于Windows Embeded CE 6.0的GPRS短信邮箱的设计与实现

南京师范大学

毕业设计(论文)

(2009届)

题目:基于Windows Embeded CE 6.0的

GPRS 短信邮箱的设计与实现

学院:计算机科学与技术学院

专业:计算机科学与技术

姓名:粟遥

学号: 21051136

指导教师:黄为民

南京师范大学教务处制

摘要

嵌入式系统是面向应用、软硬件可裁剪,并且在功能、可靠性、成本、体积、功耗等方面有严格要求的专用计算机系统。由于嵌入式系统的硬件平台有其系统资源有限,外部设备多变等特点,嵌入式操作系统必须占用很少的系统资源,具有良好的实时性、可靠性。Windows Embedded CE 6.0是一个功能强大的嵌入式操作系统,支持各种嵌入式CPU并提供了完善的软件开发平台。GPRS网络是覆盖范围广,性能较为完善的无线网络,GPRS通信网本身具有较强的数据纠错能力,数据传输率较高可达144 kbps,能够保证数据传输的可靠性和实时性。利用GPRS网络数据交换可应用于点对点的短信传输、远程目标监控和远程数据传输等方面,应用领域相当广泛。

本课题首先研究了Windows Embedded CE 6.0在Intel XScale PXA270 CPU上的的定制与移植、基于ISAPI服务器扩展的Web管理界面开发以及GPRS模块串行口驱动的实现与封装。通过构建相应的软硬件开发环境,基于深圳英蓓特信息技术有限公司Embest EduKit-IV教学实验平台和Windows Embedded CE 6.0操作系统,实现了GPRS 短信控制软件及其Web管理工具,并且最终提供了一种易扩展、低成本的小型短信邮箱解决方案。

关键词:嵌入式系统、Windows Embedded CE 6.0、ISAPI、GPRS、设备驱动

Abstract

Embedded system is an application-oriented, software- and hardware-customizable specialized computer system, which has strict requirement on functionality, reliability, cost, size, power consumption and etc. Due to the limited resources of hardware platform that embedded system equips, embedded operating system must use very few resources and have high performance and reliability. Windows Embedded CE 6.0 is a powerful embedded operating system, which supports various embedded CPUs and provides a perfect software development platform. GPRS is a wide-coverage, high-performance wireless network, of which communication itself has strong capability of error-correction, and its data transfer rate can reach up to 144 kbps, ensuring the real-time and reliability of data transmission. Exchanging data with GPRS networks can be applied in point-to-point SMS transmission, remote target monitoring and remote data transmission, etc., which has a wide application field.

This project first investigated the customization and transplantation of Windows Embedded CE 6.0 on Intel XScale PXA270 CPU, ISAPI extension-based Web management user-interface and encapsulation of GPRS module serial-port driver. A Windows Embedded CE 6.0-based GPRS SMS controlling platform and its Web management kit are implemented via establishing hardware and software development environment on Embest EduKit-IV experimental platform, and a scalable, low-cost miniature SMS mailbox solution is eventually provided.

Keywords: Embedded System, Windows Embedded CE 6.0, ISAPI, GPRS, Device Driver

目录

摘要.......................................................................................................................................................... I Abstract ................................................................................................................................................... I I 第1章概述. (1)

1.1 研究背景和论文任务的提出 (1)

1.2 程序设计模型概述 (1)

1.3 论文结构 (2)

第2章系统的总体架构的分析与设计 (3)

2.1 系统架构 (3)

2.1.1 Windows Embeded CE 6.0操作系统概述 (3)

2.1.2 Intel XScale PXA270 CPU架构概述 (3)

2.1.3 GPRS技术及相关业务概述 (4)

2.2 嵌入式Web技术概述 (5)

2.2.1 相关Web应用程序技术 (5)

2.2.2 ISAPI软件开发模型 (6)

第3章Windows Embeded CE 6.0的定制与开发 (8)

3.1 嵌入式开发平台构建 (8)

3.2 嵌入式Windows Embeded CE 6.0系统定制 (8)

3.3 设备仿真和运行 (10)

第4章基于嵌入式Windows Embedded CE 6.0的ISAPI服务器扩展程序设计 (12)

4.1 HTTP协议基本工作原理 (12)

4.2 Windows DLL技术工作原理 (14)

4.3 ISAPI访问与控制 (16)

4.3.1 ISAPI服务器扩展的基本结构 (16)

4.3.2 ISAPI服务器扩展的执行过程 (18)

4.4 管理界面ISAPI程序设计需求 (19)

4.5 管理界面ISAPI程序结构 (19)

4.5.1 程序模块划分 (19)

4.5.2 主要程序流程 (20)

4.5.3 主要数据结构 (20)

4.6 ISAPI服务器扩展的调试与运行 (21)

第5章基于Windows Embedded 6.0的GPRS软件模块的设计与实现 (22)

5.1 GPRS模块驱动程序工作原理 (22)

5.2 GPRS软件模块设计需求 (25)

5.3 GPRS软件模块程序结构 (25)

5.3.1 程序模块划分 (25)

5.3.2 主要程序流程 (26)

5.3.3 主要数据结构 (27)

第6章总结与展望 (30)

6.1 毕业设计工作的总结 (30)

6.2 对今后工作的展望 (30)

致谢 (32)

参考文献 (33)

第1章 概述

1.1 研究背景和论文任务的提出

在蜂窝式移动电话等便携式设备逐渐普及的今天,人们对其可用性、易用性和数据可靠性日益关注,针对GPRS 的各种应用也蓬勃发展起来。典型的应用有:工业控制、环境保护、道路交通、商务金融、移动办公、零售服务、公安系统等。

国内外目前均有面向集团和大型单位的GPRS/GSM 短信网关产品(如华为的短信网关解决方案),但这些产品均需要相关硬件投入和向GPRS 服务提供商申请的特服号,系统消耗的硬件资源也相对较大,并且提供Web 等友好界面的产品更加缺乏,难以满足个人和中小型企业的实际需求。

本课题通过研究GPRS 的网络体系结构及Windows Embedded CE 6.0的定制与移植,基于深圳英蓓特信息技术有限公司Embest EduKit-IV 教学实验平台构建相应的开发平台与软件开发环境并设计实现一个基于Windows Embedded CE 6.0的GPRS 短信邮箱及其Web 管理界面,旨在提供一种易扩展、低成本的小型短信邮箱解决方案。

1.2 程序设计模型概述

本课题设计主要由三部分工作组成:针对Intel XScale PXA270 CPU 的Windows Embedded CE 6.0操作系统移植、烧写,用于处理客户端Web 请求的基于Windows Embedded CE 6.0 HTTPD ISAPI 服务器扩展设计与实现,以及用于与移动网络通讯的GPRS 模块驱动程序封装与实现。这三个部分在系统中的层次关系如图1-1。

应用集成层应用开发层操作系统层BSP 层

图1-1 系统体系结构

1.3 论文结构

本篇论文主要分为6个部分。第1章为概述;第2章为系统总体架构的分析与设计,主要介绍课题所涉及的相关技术及其背景知识,包括系统的硬件、软件架构和该系统下Web技术的相关技术与成熟的开发模型;在第3章中,着重讨论在本课题所采用的硬件基础上,针对应用需求的Windows Embedded CE 6.0操作系统定制与开发;第4章主要介绍了基于嵌入式Windows Embedded CE 6.0及其HTTPD Web Server的ISAPI服务器扩展程序设计与实现过程;第5章主要介绍了在Windows Embedded CE 6.0下GPRS通信程序的设计与实现;第6章主要是对本课题设计的总结和对今后工作的展望。

第2章系统的总体架构的分析与设计

2.1 系统架构

2.1.1 Windows Embeded CE 6.0操作系统概述

Windows Embeded CE操作系统微软公司针对各类嵌入式设备开发的一款本机、硬件、实时操作系统,它对硬件系统的需求较常规操作系统相比更低、占用存储空间更小。

Windows Embeded CE并非从桌面Windows操作系统(如NT、98、XP等)修改缩小而来,而是使用一套完全重新设计的内核,所以它可以在功能非常有限的硬件上运行。虽然内核不同,但是它却提供了高度的Win32 API软件开发界面的兼容性,功能有内存管理、文件操作、多线程、网络功能等。因此,桌面应用开发人员可以很容易编写甚或直接将应用移植到Windows Embeded CE上。

Windows Embeded CE可以使用在各式各样的设备上,开发人员使用Windows Embedded CE来开发各种智能、互联、服务导向设备,这些设备范围广泛,包括从低功耗的GPS手持设备到实时的任务关键性工业控制器在内的一系列设备。其中最有名的是Pocket PC以及微软的SmartPhone。其他较为罕见的设备包括车用计算机、电视机机顶盒、工业控制设备、公共信息站等等,有些设备甚至没有任何人机界面。

Windows Embedded CE 6.0精简了开发流程,使开发人员可以充分利用Visual Studio集成开发环境和Platform Builder SDK来为基于CE 6.0的嵌入式设备快速创建应用程序和驱动程序。

2.1.2 Intel XScale PXA270 CPU架构概述

Intel代号为Bulverde的XScale PXA270系列处理器时钟频率高达624MHz,支持无线多媒体指令集扩展(Wireless MMX),允许PXA270以较低的时钟频率实现增强的多媒体性能,同时该处理器应用了Intel的SpeedStep技术来延长电池寿命。另外可以配合内部开发代号为Marathon的2700G多媒体加速器,提升高分辨率图像处理和3D加速处理能力,构建手持终端中的高级多媒体应用。

XScale PXA270处理器内部集成了双通道16位PCMCIA PC Card/CF控制器。支持8位/16位I/O模式和Memory模式的访问,但不支持32位的Card Bus,符合工业标准的32位PC卡和16位PC卡通常可以从外观上辨别。I/O模式和Memory模式可以在相同的硬件设计上通过驱动和软件来控制。

通常在开发平台上,为了适合不同接口和设备的实验,需要CPLD和FPGA。控制逻辑将状态转换中断信号和读写中断信号交给CPLD和FPGA处理后通过单一的GPIO交由CPU处理在手持产品应用中。考虑成本和功耗的因素,通常将逻辑部件用成本更低的电路实现。对于PXA270这样的处理器来说,用软件实现接口的时序和中断逻辑很容易。在安装Windows Embedded CE 6.0选择XScale的支持后,就会自动安装Mainstone III平台的板级支持包(Board Support Package,BSP)。以此为基础,修改和完善PXA270平台的BSP。

2.1.3 GPRS技术及相关业务概述

GPRS(General Packet Radio Service,通用分组无线服务)是利用分组交换(Packet Switching)的概念发展起来的一套无线传输方式。所谓“分组交换”就是将数据封装成许多独立的数据包,再将这些数据包一一传送出去,形式上有点类似邮局中的寄包裹。其作用在于只有当有数据需要传送时才会占用带宽,而且可以以传输的流量字节数进行计费。

GPRS网络是基于现有的GSM网络来实现的。在现有的GSM网络中需增加一些节点,如GGSN(Gateway GPRS Supporting Node,GPRS网关支持节点)和SGSN (Serving GSN,GPRS服务支持节点),GSN是GPRS网络中最重要的网络节点。GPRS 工作时,通过路由管理来进行寻址和建立数据连接,而GPRS的路由管理表现在以下三方面:移动终端发送数据的路由建立;移动终端接收数据的路由建立;以及移动终端处于漫游时数据路由的建立。

相对原来GSM的电路交换数据传送方式,GPRS采用分组交换技术。由于使用“分组”技术,用户上网可以免受掉线的麻烦。此外,使用GPRS上网的方法与传统WAP 不同,使用WAP上网就如在家中上网,先进行“拨号连接”,而上网后便不能同时使用该电话线,但GPRS则较为方便,语音和数据业务可以同时进行。

从技术上来说,声音的传送(即通话)继续使用GSM,而数据的传送则使用GPRS,就把移动电话的应用提升到一个更高层次,而且不需重新组网,十分经济。GPRS的用途十分广泛,包括通过手机发送及接收电子邮件、Internet浏览等。使用GPRS,数据可实现分组发送和接收,这意味着用户总是在线且按流量计费,降低了服务成本。

Um接口是GSM的空中接口。Um接口上的通信协议有5层,自下而上依次为物理层、MAC(Media Access Control)层、LLC(Logical Link Control)层、SNDC层和网络层。Um接口的物理层为射频接口部分,而物理链路层则负责提供空中接口的各种逻辑信道。GSM空中接口的载频带宽为200kHz,一个载频分为8个物理信道。如果8个物理信道都分配为传送GPRS数据,则原始数据速率可达200Kbps。考虑前向纠错码的开销,则最终的数据速率可达164kbps左右;MAC为媒质访问控制层。MAC

的主要作用是定义和分配空中接口的GPRS逻辑信道,使得这些信道能被不同的移动终端共享;LLC层为逻辑链路控制层。它是一种基于高速数据链路规程HDLG的无线链路协议;SNDC被称为子网依赖结合层。它的主要作用是完成传送数据的分组、打包,确定TCP/IP地址和加密方式;网络层的协议目前主要是Phasel阶段提供的TCP/IP 和L25协议。TCP/IP和X.25协议对于传统的GSM网络设备(如:BSS、NSS等设备)是透明的。

GPRS是在现有GSM网络上开通的一种新型的分组数据传输业务,在有GPRS 承载业务支持的标准化网络协议的基础上,GPRS可以提供系列交互式业务服务:

1、点对点面向连接的数据业务。为两个用户或者多个用户之间发送多分组的业务,该业务要求有建立连接、数据传送以及连接释放等工作程序;

2、单点对多点业务。根据某个业务请求者的要求,把单一信息传送给多个用户。该业务又可以分为点对多点多信道广播业务、点对多点群呼业务和IP多点传播业务;

3、点对点无连接型网络业务。各个数据分组彼此互相独立,用户之间的信息传输不需要端到端的呼叫建立程序,分组的传送没有逻辑连接,分组的交付没有确认保护,是由IP协议支持的业务。

GPRS除了提供点对点、点对多点的数据业务外,还能支持用户终端业务、补充业务、GSM短消息业务和各种GPRS电信业务。

2.2 嵌入式Web技术概述

2.2.1 相关Web应用程序技术

嵌入式系统的硬件部分,包括微处理器、存储器及外设器件和I/O 端口、图形控制器等。嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘那样大容量的存储介质,而大多使用EPROM、EEPROM或闪存作为存储介质。与桌面或服务器系统不同,嵌入式设备的用途决定了其拥有非常有限的硬件资源。Windows Embedded CE 6.0作为一款嵌入式操作系统,提供了一个功能简化版的Web Server(HTTPD)组件,可以通过它来组建一个Web服务器。例如在本课题中,客户端使用常规Web浏览器访问Web Server,Windows Embedded CE 6.0通过HTTPD服务将客户端请求处理、封装后发送给GPRS驱动程序,从而达到收发短信的目的。

基于Windows Embedded CE 6.0的HTTPD Web Server提供HTTP 1.0协议中规定的一个功能子集,它支持多种Web应用程序技术,如活动服务器页面(ASP)、ISAPI 服务器扩展、ISAPI筛选器、脚本映射。它对于HEAD和GET方法提供直接支持,ISAPI 服务器扩展、ISAPI筛选器和ASP可以访问POST首部和正文。但Web Server自身并

不处理POST的数据,而所有处理程序均由ISAPI服务器扩展、ISAPI筛选器和ASP 页面来处理。

CGI(Common Gateway Interface,通用网关接口)是一项传统的动态网页交换技术。CGI程序通过对请求信息的解析,可以产生相应的处理,例如它可以在服务器端实现表格处理、数据查询、发送电子邮件等操作,并最终将处理后的信息返回给客户端浏览器。CGI技术可以说是动态网页技术的先驱。CGI的实质是一个带有标准输出(stdout)的服务端可执行脚本,它可以采用各种语言编写,如C、C++、甚至Perl。然而如同许多技术一样,CGI本身也具有一定的缺陷,当服务器端脚本(如使用C++编译的exe)关联到相应请求后,每个新的请求都会在内存中加载执行该exe程序,甚至是某个用户不断的打开同一个页面也是如此。重复的加载执行会消耗大量的内存,当类似这样的并发请求增多时,极容易造成服务器的崩溃。

ASP作为Web技术的一种,可被用于创建动态、交互的Web服务端应用程序,它的功能在Windows Embedded CE 6.0中提供部分支持。一个典型的服务端ASP脚本的执行过程为:客户端浏览器请求服务端的某一.asp文件;Web Server调用ASP从文件头扫描至文件尾处理被请求的文件,执行所有的脚本命令,之后将经过处理的Web 页面发送给客户端。由于所有脚本都在服务端运行,所以Web Server承担了HTML 生成和发送的所有工作。

ISAPI(Internet Server Application Programming Interface,Internet服务器应用编程接口)为开发人员提供了更加强大的对于Web Server功能的扩展。作为CGI的一个替代品,ISAPI服务器扩展提供了与CGI程序相似的功能,不同的是它被编译为Windows DLL,通过给其宿主进程(例如IIS)提供三个规范的接口来保证其本身只在内存中装载一次,也即是说不管有多少客户端在同一时间请求,它只实例化一次,从而避免了像CGI那样大量的内存消耗。

在本课题中,由于考虑到与基于Win32的GPRS模块驱动高度耦合,决定采用ISAPI服务器扩展作为服务端Web应用程序技术。另两种技术由于在Windows Embedded CE 6.0没有被支持或者仅得到有限支持,故未予采用。

2.2.2 ISAPI软件开发模型

Internet服务器应用程序接口(ISAPI)是微软IIS服务器中多层架构API的一种。它是一种相对底层的应用程序,与之相对应的,高效和复杂性成为它的主要特性之一。在Windows Embedded CE 6.0 HTTPD Web Server中同样得到支持。同时一些开源Web Server也提供了相应的ISAPI模块用于支持为微软IIS所编写的ISAPI Web应用。一些现代Web技术,例如ASP、PHP也是建立在ISAPI之上。本课题设计中使用的ISAPI 服务器扩展是一种由Web Server运行的真实应用程序。它被编译为DLL并与Web

Server同时加载到同样的内存空间,可以访问所有Web Server所提供的功能。客户端使用与普通静态HTML完全一样的方法访问ISAPI应用以获得相应功能。

常见的ISAPI服务器扩展应用程序有:活动服务器页面(ASP)、https://www.doczj.com/doc/2312253038.html,(安装在IIS 6.0及以上版本)、Perl ISAPI(又称作Perlis)、PHP等。

本课题设计中使用Visual Studio 2008创建面向智能设备的Win32 DLL作为ISAPI 的开发工具和应用程序框架。

第3章Windows Embeded CE 6.0的定制与开发

3.1 嵌入式开发平台构建

Platform Builder 6.0是微软提供给Windows Embedded CE 6.0开发人员进行基于Windows CE平台下嵌入式操作系统定制的开发工具。它提供了所有进行设计、创建、编译、测试和调试Windows Embedded CE 6.0操作系统平台的工具,开发人员可以通过交互式的环境来设计和定制内核、选择系统特性,然后进行编译和调试. 同时开发人员还可以利用Platform Builder 来进行驱动程序和应用程序项目的开发等。在Windows Embedded CE 6.0中,操作系统定制工具Platform Builder 6.0在安装完成后将以插件的形式集成到Visual Studio 2005集成开发环境中。

为了建立Windows Embedded CE 6.0的开发环境,需要在用于开发的PC机上安装以下软件:

1、Microsoft Visual Studio 2005集成开发环境;

2、Windows Embedded CE 6.0软件;

3、Virtual PC 2007软件(用于在仿真中模拟网络适配器);

4、相关MSDN参考文档。

在完成以上软件的安装之后,即可在Visual Studio 2005中新建Platform Builder 工程用于创建相应CPU架构的操作系统映像。

3.2 嵌入式Windows Embeded CE 6.0系统定制

为了构建本课题设计所需的软硬件平台,首先需要对Windows Embedded CE 6.0进行移植和裁剪。所有移植与裁剪的工作均可以在Visual Studio 2005集成开发环境中完成。

从根本上说,Windows Embedded CE 6.0的移植过程也就是改写板级支持包(BSP)的过程。BSP是一个包括启动程序、OEM适配层程序(OAL)、标准开发板(SDB)和相关硬件设备的驱动程序的软件包。BSP是基于Windows Embedded CE 6.0平台系统的主要部分。操作系统移植步骤为:

1、对操作系统进行裁减,配置各个组件并且修改相关的配置文件;

2、开发目标设备系统上的设备驱动程序,建立定制的CE 操作系统映像文件;

3、将目标文件下载到目标设备上进行调试;

4、定制操作系统内核后,即可在该架构基础上开发应用程序。

在本课题设计中,需要在Platform Builder OS Design 向导中创建一个带有Web Server以及串行口驱动程序组件的操作系统映像。

本课题设计所采用的实验平台自带了一个基于微软MAINSTONE III修改的BSP ——MINI270-IV,设计中将使用该BSP所生成的操作系统映像在实验平台中进行烧写。具体创建步骤为:

1、打开Platform Builder,创建一个新的OS Design工程,如图3-1;

图3-1 创建新的OSDesign工程

2、在创建向导中中依次选择BSP为MINI270-IV,设计模板为PDA Device,变体中选择Enterprise Web Pad;

3、在Applications Media页中直接选择“下一步”;

4、在Networking_Communications页中选中Local Area Network (LAN)中的Wired Local Area Network;

最后选择完成向导。

之后在Visual Studio开发环境中Catalog Items视图里将以下几个组件添加到OS Design工程中,如图3-2:

1、Web Server (HTTPD);

2、Web Server Administration ISAPI;

3、NTLM;

4、Internet Connection Sharing (ICS);

5、Reference Gateway User Interface;

6、Hive-based Registry。

图3-2 Catalog Items视图面板

3.3 设备仿真和运行

Windows Embedded CE 6.0提供了基于ARMV4I体系处理器的设备仿真功能,也被称为模拟器(Device Emulator)。

仿真器是一个仿真支持嵌入式系统平台的硬件行为的工具。它可以设计和建立一个基于Windows Embedded CE 6.0的平台,并利用模拟器运行及仿真,而不是在真实的硬件平台上测试。只要提供相应架构的操作系统映像,即可在仿真器中运行该定制版本的Windows Embedded CE 6.0。在Platform Builder 6.0中提供的仿真器支持以下功能:

1、自定义屏幕分辨率;

2、自定义屏幕方向;

3、自定义特殊功能的按键组合;

4、串行口映射;

5、虚拟外置存储卡。

当安装了Virtual PC 2007软件后,仿真器还支持以太网访问及通信。

创建一个仿真器OS Design的基本步骤如下:

打开Platform Builder,创建一个新的OS Design工程;

在向导BSP页中选择Device Emulator: ARMV4I。

之后可以按照需要选择相应的设计模板和可选组件安装。在本课题设计中仍然选择与上一节中相同的设计模板与组件配置。

仿真器能够在PC下模拟Windows Embedded CE 6.0的物理平台,但实际上它只不过是运行在CPU Ring3级别(目态)的应用程序,所以它的运行速度要比正常的物理平台要慢。基于ARMV4I 的模拟器只能调试基于“Device Emulator: ARMV4I”的BSP和所有以ARMV4I 指令集编译的程序。尽管模拟器有着以上限制,但是操作系统的大多数API 对于任何CPU 而言都是相同的,考虑到不受CPU 类型影响的简单程序,都可以在模拟器上调试。在本课题设计中所开发的应用程序均可以直接在仿真器中运行。

第4章基于嵌入式Windows Embedded CE 6.0的ISAPI服务器

扩展程序设计

4.1 HTTP协议基本工作原理

HTTP协议是由万维网协会(World Wide Web Consortium)和Internet工作小组(Internet Engineering Task Force)合作发布的一系列RFC文档,其中最著名的RFC 2616定义了HTTP协议的我们今天普遍使用的一个版本HTTP 1.1。

HTTP协议是基于TCP的一个客户端和服务器端请求和应答的标准。客户端通常为Web浏览器,应答的服务器上存储着资源,比如HTML文件和图像。尽管TCP/IP 协议是互联网上最流行的协议族,HTTP协议并没有规定必须使用它和基于它支持的层。事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。

通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则始终在该端口监听客户端发送过来的请求。一旦收到请求,服务器则向客户端发回一个状态行,比如“HTTP/1.1 200 OK”,和响应消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。请求流程如图4-1所示。

图4-1 HTTP请求与响应流程

客户端发出的请求信息(Request Message)包括以下几个:

请求行,例如GET /images/logo.gif HTTP/1.1,表示从/images 目录下请求logo.gif 这个文件。

(请求)头,例如Accept-Language: en空行

可选的消息体

请求行和标题必须以 作为结尾(即回车然后换行)。空行内必须只有而无其他空格。在HTTP/1.1 协议中,所有的请求头,除Host外,都是可选的。

HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表明Request-URI指定的资源的不同操作方式,其中几种典型的方法如下:

HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。

GET:向特定的资源发出请求。

POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

PUT:向指定资源位置上传其最新内容。

DELETE:删除指定资源。

方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed);当服务器不能识别或者不支持对应的请求方法时,应当返回状态码501(Not Implemented)。

HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当符合下述的方法各自的语义定义。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。

所有HTTP 响应的第一行都是状态行,依次是当前HTTP 版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

状态代码的第一个数字代表当前响应的类型:

1xx消息:请求已被服务器接收,继续处理;

2xx成功:请求已成功被服务器接收、理解、并接受;

3xx重定向:需要后续操作才能完成这一请求;

4xx请求错误:请求含有词法错误或者无法被执行;

5xx服务器错误:服务器在处理某个正确请求时发生错误。

虽然协议中推荐了描述状态的短语,例如"200 OK","404 Not Found",但是Web 开发人员仍然能够自行决定采用何种短语,用以显示本地化的状态描述或者自定义信息。

下面是一个HTTP客户端与服务器之间会话的例子,运行于https://www.doczj.com/doc/2312253038.html,,端口80。

客户端请求:

(紧跟着一个换行,通过敲入回车实现)

服务器应答:

(紧跟着一个空行,并且由HTML格式的文本组成了https://www.doczj.com/doc/2312253038.html,的主页)

在HTTP1.0中,客户端发送一个请求至服务器,服务器发送一个应答至客户端。之后,连接将被释放。另一方面,HTTP1.1支持持久连接。这使得客户端可以发送请求并且接收应答,然后迅速的发送另一个请求和接收另一个应答。因为多个额外的请求,TCP连接并没有被释放,而每个请求中关于TCP的负载相对较少。同时,在得到上一个请求的应答之前发送多个请求(通常是两个)也成为可能。

4.2 Windows DLL技术工作原理

DLL是动态链接库(Dynamic Link Library)的简称。动态链接库是从C语言函数库和Pascal库单元的概念发展而来的。所有的C语言标准库函数都存放在某一函数库中,同时用户也可以用LIB程序创建自己的函数库。在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数代码,并把这些函数代码添加到可执行文件中。这种方法与只把函数储存在已编译的.OBJ文件中相比,更有利于代码的重用。

随着Windows这样的多任务环境的出现,函数库的方法显得过于累赘。如果为了完成屏幕输出、消息处理、内存管理、对话框等操作,每个程序都不得不拥有自己的

函数,那么Windows程序将变得非常庞大。Windows的发展要求允许同时运行的几个程序共享一组函数的单一拷贝,动态链接库应运而生。动态链接库是作为共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个DLL 中,该DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL副本的内容。

动态链接具有下列优点:

1、节省内存和减少交换操作。多个进程可以同时使用一个DLL,在内存中共享该DLL的一个副本。相反,对于每个用静态链接库生成的应用程序,Windows必须在内存中加载库代码的一个副本。

2、节省磁盘空间。多个应用程序可在磁盘上共享同一份DLL副本。相反,每个用静态链接库生成的应用程序均具有作为单独的副本链接到其可执行图像中的库代码。

3、升级DLL更为容易。当DLL中的函数发生更改时,只要函数的参数和返回值没有更改,就不需重新编译或重新链接使用它们的应用程序。相反,静态链接的对象代码要求在函数更改时重新链接应用程序。

4、通用性更强。只要程序遵循函数的调用约定,用不同编程语言编写的程序就可以调用相同的DLL函数。程序与DLL函数在下列方面必须是兼容的:函数期望其参数被推送到堆栈上的顺序,是函数还是应用程序负责清理堆栈,以及寄存器中是否传递了任何参数。

使用DLL的一个潜在缺点是如果一个应用程序中存在单独的DLL模块,那么该应用程序将不是独立的。

对于常规的函数库,链接器从中拷贝它需要的所有库函数,并把确切的函数地址传送给调用这些函数的程序。而对于DLL,函数储存在一个独立的动态链接库文件中。在创建Windows程序时,链接过程并不把DLL文件链接到程序上。直到程序运行并调用一个DLLs中的函数时,该程序才要求这个函数的地址。此时Windows才在DLL 中寻找被调用函数,并把它的地址传送给调用程序。一般情况下,如果一个应用程序使用了动态链接库,Win32系统保证内存中只有DLL的一份副本,这是通过内存映射实现的。DLL首先被调入Win32系统的全局堆栈,然后映射到调用这个DLL的进程的地址空间。在Win32系统中,每个进程拥有自己的32位线性地址空间。如果一个DLL被多个进程调用,每个进程都会被分配一份该DLL的映像。当没有程序使用它时,系统就将它移出内存,减少了对内存和磁盘的要求。

在Win32 中,所有DLL都可能包含一个可选的入口点函数(通常称为DllMain),初始化和终止时都要调用此函数,需要时可以利用该函数分配或释放其他资源,如文

相关主题
文本预览
相关文档 最新文档