嵌入式WEB服务器的设计与实现毕业论文.doc

上传人:文库蛋蛋多 文档编号:2397381 上传时间:2023-02-17 格式:DOC 页数:57 大小:696.50KB
返回 下载 相关 举报
嵌入式WEB服务器的设计与实现毕业论文.doc_第1页
第1页 / 共57页
嵌入式WEB服务器的设计与实现毕业论文.doc_第2页
第2页 / 共57页
嵌入式WEB服务器的设计与实现毕业论文.doc_第3页
第3页 / 共57页
嵌入式WEB服务器的设计与实现毕业论文.doc_第4页
第4页 / 共57页
嵌入式WEB服务器的设计与实现毕业论文.doc_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《嵌入式WEB服务器的设计与实现毕业论文.doc》由会员分享,可在线阅读,更多相关《嵌入式WEB服务器的设计与实现毕业论文.doc(57页珍藏版)》请在三一办公上搜索。

1、嵌入式WEB服务器摘 要Linux操作系统是一个开放源代码的免费操作系统,它不仅有安全、稳定、成本低的特点,而且很少发现有病毒传播。近年来,随着linux操作系统在我国的不断普及,越来越多的服务器、工作站和个人电脑开始使用linux软件。基于linux具有稳定、可靠、安全和强大的网络功能这些优点,本文选择在linux环境下实现一个Web服务器。本文研究了HTTP协议实现了数据的传输,阐述了采用linux套接字编程接口的方法实现HTTP协议的方案,详细分析了客户端和服务器之间的通信过程。本文在linux系统下实现一个Web服务器程序,在局域网内,将此服务器程序在一台计算机上运行,使网内其它计算机

2、访问这台服务器时,实现客户端和服务器以HTTP协议进行请求和响应的功能。此外还编写了Web浏览器。Web服务器实现的全部代码采用linux下的C语言编程,可进一步提高系统运行速度,并且增强了系统的安全性和可靠性。Web浏览器代码是采用C+和Qt的编程,界面设计是用Qt实现的。关键词:嵌入式;linux操作系统;HTTP协议;Web服务器;Socket;Internet;QtEmbedded WEB serverABSTRACTThe Linux operate system is a free operate system which opens asource code.Not only i

3、t has characteristics such as safe,stability,and the low cost,but also it seldom dissemiantes the Virus. In recent years,along with the Linux operatesystem in our country makes widely available continuously,more and more servers,work stations and personal computer start using Linux software.As the L

4、inux operting system has the function of stable reliable,safe and formidable network,to realize a Web server in the Linux environment is the best choice.This paper introduces design and implement of Web server in Linux operating system. The problem of how to realize data transmission by HTTP protoco

5、l which based on Linux is valuable to research. This paper expounds realizing scheme for HTTP protocol, and gives out protocol communication module,wih the method of Linux socket programming intefface, and analyze the communication process between client and server. This paper realizes a Web server

6、procedure in Linux operating sysytem.In the local area network, if this server procedure runs on a computer, which can realizes the function that the client requests and the server responds by HTTP agreement, when other computers in the net visit it.The complete code of the Web servers realization u

7、ses the C language programming in Linux operating system,which may further enhance the running rate,and strengthened the security and reliability of the system. The code of Web browsersrealization uses The C+ language and Qt,Key words: Embedded ;Linux operating system;HTTP protocol;Web server ;Socke

8、t; 目 录摘 要IABSTRACTII1 绪论11.1 课题的研究意义11.2 国内外研究现状11.3 论文研究内容和主要工作22 相关理论与知识32.1 Linux操作系统简介32.2 Web服务器的概念32.3 WEB服务器基本构架42.3.1 WEB服务器和浏览器42.3.2 WEB页面62.4 WEB系统的基本原理是请求/响应62.5 WEB B/S的通信72.5.1 分析请求82.5.2 构造响应82.6 Linux下Socket网络编程基础知识92.6.1 Socket简介92.6.2 Socket的定义 92.6.3 Socket结构体102.6.4 Socket函数库102.

9、6.5 Socket编程的基本过程112.7 HTTP协议122.7.1 HTTP URL122.7.2 HTTP请求122.7.3 HTTP响应132.7.4 HTTP消息报头133 WEB服务器的设计思路与方案173.1 web服务器的模型173.2 web 服务器如何工作173.3 web服务器的设计思路173.3.1 web服务器的设计思路173.3.2 web服务器的功能183.3.3 Web服务器的功能模块图183.4 web服务器的设计方案193.4.1 Web服务器的工作流程193.4.2 web服务器的核心设计思想203.4.3 总体设计的关键点204 LINUX下WEB服务

10、器的设计与实现214.1 客户端与服务器建立连接214.1.1 基本概念214.1.2 建立一个Socket214.1.3 定义程序Socket的使用224.I.4 使用配置Sockct224.1.5 连接Socket234.2 客户端和服务器端之间的请求响应过程244.2.1 整体流程分析244.2.2 服务器接受请求254.2.3 服务器处理客户端的请求并作出响应254.3 Linux下Web服务器的运行与应用295 Web服务器的实现315.1 客户端与服务器建立请求316 总结336.1 设计内容总结336.2 设计结论33参考文献35致 谢37外文文献38中文翻译481 绪论1.1

11、课题的研究意义Internet的迅猛发展,传统的Client/server体系结构(客户机/服务器),渐渐的在某些方面显示出它的局限性,Browser/server结构(浏览器/服务器)的出现恰恰弥补了这种缺陷。B/S方式已成为一种时尚,大部分网络应用系统都是以这种B/S方式与网络用户交换信息。B/S的基础是客户端要有一个浏览器程序,服务器端要有一个与之对应的Web服务器。显然,Web服务器在B/S方式下起着决定性的作用,因此,一般互联网站都采用功能强大的通用Web服务器。随着网络各个核心部分业务量的提高,其访问量和数据流量快速增长,处理能力和计算强度也相应增大,使得单一设备根本无法承担,而且

12、许多企业级应用系统的应用请求具有突发性和紧急性的特点,当应用访问急剧上升时,容易造成网络瓶颈。解决这一问题的办法是采用多台嵌入式Web服务器为一个应用服务,集群负载均衡机制就是为解决多个网络设备之间实现合理的业务量分配而提出的。1.2 国内外研究现状目前在市场上有20到30种Web应用服务器,每种服务器在实现对象组件支持、分布式计算、部署的速度和易用程度上采取了不同方式。 目前市场上主流Web服务器主要有以下几种产品:1Apache,由SUN公司开发的Apache服务器可以运行在包括Linux等多种系统平台之上。Apache支持许多特性,大部分通过编译的模块实现,如很有用的URL重写,定制日志

13、文件以及过滤支持等。2Zeus Webserver3.3.8 服务器,Zeus服务器在SMP (Symmetric Multi Processing的简称,意为对称多处理系统,内有许多紧耦合多处理器,这种系统的最大特点就是共享所有资源) 环境下有优秀的可伸缩性,并实现了常见的特性集合,如访问控制、动态内容产生和安全等。3. iPlanet Enterprise Edition 4.1,Netscape公司开发的iPlanet具有现今高性能WEB服务器的特性,如具有很高的可靠性、可用性、可维护性,系统高度可扩展性等特点,相对其它WEB服务器iPlanet还提供更多的JAVA功能。4AOLserv

14、er 3.3.1 ,AOL公司开发的AOLserver 3.3.1是一个多线程、可升级和扩展的WEB服务器。5. Roxen WebServer 2.1.31,在Roxen中可以使用RXML语言生成动态网页内容。RXML是函数形式的服务器端XML脚本语言,它由Roxen服务器解析并执行。6. Jigsaw,它由WWW组织(W3C)开发,W3C组织负责研究和规定网络协议的标准(如HTTP)。它使用JAVA语言开发,是成功的面向对象、功能全面的服务器。因为Jigsaw不受测试平台的限制,所以Jigsaw是一个具有活力的、拥有无限潜能的优秀WEB服务器。在嵌入式系统的应用中,由于HTMI 语言的标准

15、统一性,只要在设备里建立一个微型web服务器,人们就可以使用现有的Web浏览器与该设备进行双向交互、接收或发送信息。它为我们管理、控制和监测各种各样的设备提供了一个很好的途径,只要设备接入了Internet,我们就可以在世界上的任何地方十分方便地控制、操纵那些配备有微型Web服务器的设备。在Internet上为了发布信息,用户必须运行Web服务器程序。但现成的服务器程序有时候不能满足所有人的要求,所以可以动手开发一个自己的Web服务器程序,其功能就可由设计者定制的功能和需求决定了。1.3 论文研究内容和主要工作本次设计就是需要完成一个简易的WEB服务器的设计,实现web服务器基本功能:页面访问

16、请求响应、HTML文件的解析以及数据发送。所以在完成设计之前,必须先了解WEB服务器设计的原理与结构。一般来说,Web服务器通常由以下几个部分组成:(1)服务器初始化部分这部分主要完成Web服务器的初始化工作,如建立守护进程、创建TCP套接字、绑定端口、将TCP套接字转换成侦听套接字,进入循环结构,等待接收用户浏览器连接(2)接收客户端请求由于客户端请求以文本行的方式实现,所以服务器一般也以文本行为单位接收(3)解析客户端请求这部分工作比较复杂,需要解析出请求的方法、URL目标、可选的查询信息及表单信息如果请求方法为HEAD,则简单地返回响应首部即可;如果方法是GET,则首先返回响应首部,然后

17、将客户端请求的URL目标文件从服务器磁盘上读出,再发送给客户端。 (4)发送响应信息之后,关闭与客户机的连接2 相关理论与知识2.1 Linux操作系统简介 简单点说,Linux 是一套免费使用和自由传播的类Unix操作系统,是一个基于可移植操作系统接口和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。同事它能运行一些主要的的Unix工具软件、网络协议和应用程序。它还支持64和32位硬件。Linux是一个性能稳定的多用户网络操作系统,继承了Unix以网络为核心的设计思想。它是由全世界成千上万的程序员设计与实现的。是一个不受任何商品化软件版权制约、全世界都能够自由使用的Unix兼容产品

18、。 Linux模块化的设计结构,使它既能在廉价的PC机上实现Unix特性,也能在价格高昂的工作站上运行,具备多任务及多用户能力。Linux系统软件不仅仅包括完整的Linux操作系统,还包括了高级语言编译器、文本编辑器、等应用软件。另外它还包括图形用户界面,就像WindowsNT一样,我们能够使用窗口、菜单和图标进行操作。 Linux的优点:可靠、稳定、安全和强大的网络功能。在一些软件的支持下,能够实现WWW、FTP、DHCP、E-mail、DNS等服务,利用iptables/ipchains 构建NAT和功能比较全面的防火墙。2.2 Web服务器的概念WWW 是 World Wide Web

19、(环球信息网)的缩写,也可以简称为 Web,中文名字为“万维网”。 WWW( World Wide Web ) 是一种建立在Internet上的全球性的、交互的、动态、多平台、分布式、图形信息系统。它只是建立在Internet上的一种网络服务。它的开发最初是为了在科学家之间共享成果, 科学家们可以将科研成果以图文形式方在网上进行共享。它的最基本的概念就是Hypertext(超文本),如果你用过Windows上的任何一种在线帮助系统你就会比较了解它的结构了。它起源于1989年3月,由欧洲量子物理实验室 CERN(the European Laboratory for Particle Physi

20、cs)所发展出来的主从结构分布式超媒体系统。通过万维网,人们只要通过使用简单的方法,就可以很迅速方便地取得丰富的信息资料。 由于用户在通过 Web 浏览器访问信息资源的过程中,无需再关心一些技术性的细节,界面简单容易操作。长期以来,人们只是通过传统的媒体(如电视、报纸、杂志和广播等)获得信息,但随着计算机网络的发展,人们想要获取信息,已不再满足于传统媒体那种单方面传输和获取的方式,而希望有一种主观的选择性。现在,网络上提供各种类别的数据库系统,如文献期刊、产业信息、气象信息、论文检索等等。由于计算机网络的发展,信息的获取变得非常及时、迅速和便捷。 到了1993年,WWW 的技术有了突破性的进展

21、,它解决了远程信息服务中的文字显示、数据连接以及图像传递的问题,使得 WWW 成为 Internet 上最为流行的信息传播方式。 现在,Web 服务器成为 Internet 上最大的计算机群,可以说,Web 为 Internet 的普及迈出了开创性的一步, WWW 采用的是客户/服务器结构,其作用是整理和储存各种WWW资源,并响应客户端软件的请求,把客户所需的资源传送到Windows NT、UNIX 或 Linux 等平台上。Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务

22、器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑(business logic)。 Web服务器(Web Server) Web服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CG

23、I脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)JavaScript,或者一些其它的服务器端(server-side)技术。无论它们(译者注:脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。 要知道,Web服务器的代理模型(delegation model)非常简单。当一个请求(request)被送到Web服务器里来时,它只单纯的把请求(request)传递给可以很好的处理请求(request)的程序(

24、译者注:服务器端脚本)。Web服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境,而不会超出职能范围。服务器端(server-side)程序通常具有事务处理(transaction processing),数据库连接(database connectivity)和消息(messaging)等功能。 2.3 WEB服务器基本构架Web应用的基本构架包括浏览器、网络和Web服务器。浏览器向服务器请求Web页,Web页可能包括由浏览器解释执行的客户端脚本,而且可以与浏览器、页内容和页中包含的其他控件(Java Applet、Activ

25、eX控件和插件等)进行交互。用户向Web页输入信息或通过超级链接导航到其它Web页,与系统进行交互,改变系统的“业务状态”。2.3.1 WEB服务器和浏览器WEB 是基于请求和响应的系统,它是在C/S(Client/Server)结构的基础上发展而来的。为了实现世界范围内的信息共享和发布,它规范了通讯协议,并规范、强化Client/Server两端的系统功能,WEB为用户在Internet上查看文档提供了一个图形化的,易于进入的界面,WEB是一种基于超文本传输协议(Hypertext Transport Potocol 简称HTTP)向计算机传送多媒体信息(如文本、图片、声音、视频、交互式应用

26、程序)的Internet服务。同C/S结构一样,WEB由两部分构成,即WEB服务器端和WEB浏览器端,WEB服务器的主要功能是:创建、管理和维护WEB页面,对浏览器的请求进行应答并返回HTML页,WEB浏览器(Browser)用来观看WEB资源的客户端软件,主要负责请求,解释并显示WEB页,其工作过程见图2.3。Web浏览器通常可以使用流行的IE或者其它的浏览器。服务器端的TCPIP协议是操作系统内嵌的,其信息流符合HTTP协议。服务器中的HTTP引擎用来分析浏览器的请求消息,并根据请求做出相应的动作。这些动作包括向浏览器发送一些静态页面或调用一些应用服务程序。对于服务器中的静态web页面,可

27、以使用一些常用软件如FrontPage等制作,以备Web服务器调用。而服务器中的应用服务程序则用来扩展服务器所提供的服务。从图l中可以看出,微型web服务器的核心就是:HTTP引擎。HTTP协议是一种网络应用层的标准协议,Web浏览器和Web服务器之间的通信都是采用HTTP协议来实现的。因此只要是符合HTTP协议的通讯过程和数据内容,就可以使用浏览器作为客户端进行连接和传递。Web浏览器Web服务器请求服务Index.htm.Internet或Intranet服务器客户机图2.3 Web工作原理图2.3 主要过程为:(1) WEB浏览器通过将URL发给WEB服务器请求信息;(2) WEB服务器

28、响应请求,并返回给客户机超文本标记语言(HTML)页面;(3) WEB浏览器对超文本标记语言(HTML)页面进行解释并显示。2.3.2 WEB页面WEB页面是WEB系统实现发布、进行管理的主要对象。WEB页面像一个大的容器,将要发布的文字、图片、声音、动画、视频等多种媒体信息封装到一起,供WEB系统实现发布,进行管理。对于WEB系统而言,在众多的WEB页面中,有一个称为WEB主页的页面,它是访问者浏览WEB系统的起点。每个WEB页面都具有唯一的地址,称为统一资源定位符(URL),URL由存储此页面的计算机名和此页面的确切路径构成。WEB页面是超文本标记语言(HTML)编写的。HTML是一种嵌入

29、式语言,通过在普通文本中嵌入各种标记(TAG),使普通文本具有了超级文本的功能。根据WEB页面的内容,可将WEB页面分为三种类型:静态页面,动态页面,目录列表页面。2.4 WEB系统的基本原理是请求/响应客户端,浏览器接受用户输入的网页地址(URL)并进行分析,从而得到网页的文件名字和存放网页的计算机地址以及服务程序的端口号,首先根据计算机地址及端口号与服务器建立连接,然后把网页名称及浏览器本身的有关信息按照一定的格式组织起来,发给服务器,这就是请求。比如用户输入http:/kulin.ts/index.html,从而可知:(1) 计算机名称为briup根据这个名字能获知其计算机地址(2) 端

30、口号为80(http服务的默认端口号)(3) 页面的文件名为index.html浏览器就与briup上端口号为80的服务程序建立连接,并把类似下面的数据发过(作为服务请求):GET /index.htm HTTP/1.1Accept:image/gif,image/x-xbitmap,application/vnd.ms-powerpoint,*/Accept-Language:chUA-pixels:800*600UA-color:color16UA-OS:Windows xpUA-CPU:P41.6User-Agent:Mozilla/2.0(compatibleMSIE3.01;Wind

31、ow XPHost:briupConnection:Keep-Alive其中第一行说明了文件名称(index.html)、请求的类型(GET)及浏览器支持的协议版本(HTTP/1.0)服务器端接受到请求后,对其进行分析,解析出网页的文件名称及其他信息(比如请求的类型、处理要求等),根据网页的文件名称到磁盘上提取文件内容,把文件内容和一些必要的说明信息打包后发给浏览器,然后断开连接,这就是“响应”。(浏览器接到文件内容后就将其中的内容显示出来了)比如对于文件长度为2559B的index.html来说,可以发送如下数据作为“响应”:HTTP/1.1 200 OKServer: briup-Http

32、Svr/1.1Date:WED,20 may 2006 12:45:21 Content-type:text/htmlContent-length:2559Last-Modified:Sun,22 may 2006 14:21:50上述数据分2大部分,第1部分为“头”,其中,第1行是状态行,包括服务器执行的HTTP版本及本次响应的状态码。后4行分别说明了服务器名称、当前日期、数据类型、数据长度、最后修改的日期和时间。第2部分为数据“体”,是“请求”要求传送的数据,它跟在1个空行之后。当然,客户端和服务器之间还可能有一些中间环节,比如代理服务器、网关、“隧道”等,在此我们先不予考虑。2.5 WE

33、B B/S的通信要完成Web服务,除了网络通信链路的建立和拆除,之外至少还要有二方面的功能:“分折请求” 和“构造响应”。客户端与服务器交换数据之前,首先用TCPIP建立连接,客户端向服务器请求数据,服务器则向客户端响应并提供数据客户端和服务器以HTTP协议进行请求和响应服务器和客户端只能为一次事务处理建立并维持连接,完成一次事务处理后便结束连接每一个客户端向服务器发送请求均以方法(Method)开始,后跟对象的URL客户端一般要在上述信息中补充所采用HTTP协议的版本号,其后跟一个回车换行(CRLF)字符对依据请求情况,浏览器可能在CRLF后加上浏览器按特别的首部格式编码的信息完成后,浏览器

34、给请求加上一个CRLF还可依据请求情况,把一个实体(MIME格式文档)加到整个请求之后一个HTTP方法实际上是一条命令,客户端用它来说明其请求目的,常用的有GET,HEAD和POSTWeb服务器收到请求并解析之后,以一个HTTP响应消息响应客户端的请求这个响应消息通常以HTTP协议版本号开始,后面是三位状态码和一个原因短语(Reason phrase),其后是一个CRLF,再后是请求的信息(它被服务器以一种特殊的首部格式编码),最后,服务器加上一个CRLF其后还可以有一个可选实体状态码是三位数,它描述了服务器理解和满足请求的情况,原因短语是状态代码的一个简短说明HTTP协议版本号、状态代码、原

35、因短语一起构成了状态行上述分析不难看出,接收客户端请求、解析客户端请求、响应客户端请求、向客户端回送请求的结果是Web服务器所需完成的主要任务,Web服务器程序代码主要是为了完成这几项任务2.5.1 分析请求如前文所述,“请求”的第1行数据是最重要的,它的格式是:方法 资源地址 HTTP版本号 回车换行“方法”主要有3种:GET:要求必须返回一定的内容。有时还必须根据“请求”的要求先对内容做一定的处理(比如解压缩或根据时间进行过滤)。 HEAD:处理办法和GET完全相同,但要求只返回“头”,而不可返回任何实质内容(“体”)。 POST:用来处理网页的附属内容,比如“注解”、数据回送等。作为简单

36、的服务器,我们只考虑第一行,且只处理GET请求,版本号不予理睬。2.5.2 构造响应如前文所述,响应的第1行是状态行,非常重要,格式如下:HTTP 版本号 状态码 状态文字说明 回车换行版本号可取HTTP/1.1;状态码是3位数字,根据情况按表2.1所示代码取值。 表2.5 状态码值 代码特征含义举例1 开头的2 开头的3开头的4开头的5开头的保留未用成功需要进一步处理客户断错误服务器端错误比如200表示处理成功比如400表示“请求”有错,404表示找不到客户指定的文件 作为简易的服务器,“响应”可以只返回状态行和文件内容,即送回如下的内容: HTTP/1.1 200 OK 状态行 一个空行

37、文件内容 文件内容2.6 Linux下Socket网络编程基础知识 本文所设计的Web服务器是在Linux操作系统下的Socket编程实现,所用的函数均来自Linux下的Socket函数库。客户端和服务器的连接也是用Socket套接字来实现的。所以,Socket网络编程是设计的基础。2.6.1 Socket简介二十世纪八十年代初,美国国防部高级研究计划署让加利福尼亚大学在UNIX操作系统下实现TCP/IP协议TCP/IP很快被集成到UNIX中,同时出现了许多成熟的TCPrIP应用程序接口(API)这个API成为Socket接口。今天,Socket接口是TCPfIP网络最为通用的API,也是在I

38、nternet.上进行应用开发最为通用的APILu-ul。 Socket实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有Socket接口的计算机通信。应用程序在网络上传输、接收的信息都通过这个Socket接口来实现,在应用开发中就像使用文件句柄一样,可以对Socket语句进行读、写操作,我们将Socket翻译为套接字。2.6.2 Socket的定义 网络的Socket数据传输是一种特殊的I/OSocker也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用-Socket()该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket

39、实现的。常用的Socket类型有两种形式流式Socket-S(X:K_ STREAM和数据报式Socket_SOCKDGRAM。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket对应于无连接的UDPSocket务应用。2.6.3 Socket结构体 1套接字结构 struct sockaddr_in short int sin_family: /地址类型AF_XXXAF_UNIX,AF_ INET和AF_NS) unsiped short int sin_port; /16位端口号 struct in_addrsin_addr; /

40、32位IP地址 char sin_zero8l:/保留 /端口号以及Intcmet地址使用的是网络字节顺序,需要通过函数htons转换 用这个数据结构可以轻松处理套接字地址的摹本元素。注意sin zero(它被加入到这个结构,并且长度和struct sockaddr一样)应该使用函数bzer()或memset()来全部置零。同时,这一重要的字节,一个指向scekaddr_in结构体的指针也可以被指向结构体sockaddr并且代替它。这样的话即使Sbocket()想要的是srruct sockaddr*,你仍然可以使用struct sackaddr_in,并且在最后转换。同时,注意sin_fam

41、ily和struct sockaddr中的sin_family -致并能够设置为“AF INET”。最后,sin_port和sin_ addr必须是网络字节顺序(Network Byte()ader) 2主机结构 struct hostent char *h_name: /主机的正式名称 char*h_aliases: /类别列表 int h_addrtype: /主机地址类型:AF XXX int h_length: /主机地址长度:4字节(32位) char*h_addr_list: /主机IP地址列表,网络字节顺序 #define h_addr h_addr_list0 /h_addr是

42、h_addr_list中的第一地址2.6.4 Socket函数库 (l)套接字函数:int socket(int domain,int type,int protocol) 函数socket创建一个套接字描述符,如果失败返回nbsp;-l。domain为地址类型AF XXX,type为套接字类型,SOCK_ STREAM(TCP), SOCK_DGRAM(UDP),SOCK_RAW (IP、ICMP); protocol指定协议,0为默认模式。 (2)绑定函数:int bind(int sockfd,struct sockaddr *hostaddr,int addrlen) 函数bind将本

43、地地址与套接字绑定在一起,成功返回0,失败为-l,并设置全局变量ermo为错误类型EADDRINUSER。此函数的三个参数分别为: 1) sockfd为socket调用返回的文件描述符: 2)*address是指向包含有本机IP地址及端口号等信息的sockaddr类型的指针,它的类型是struct sockaddr_in; 3) sin_falnily -般为AF-lNTE;(3)连接函数:int connect( int sockfd,struct sockaddr *servaddr, int_addrlen)函数connect与服务器建立一个连接,成功返回0,失败返回-l。servadd

44、r为远程服务器套接字地址,包括服务器的IP地址和端口号;addlen为地址的长度。 (4)接受请求函数:int accept(int sockfd struct sockaddr *addr,int *addrlen) 函数accept从listen的完成连接队列中接收一个连接,如果连接队列为空,则该进程睡眠。 (5)监听函数:int listen(int sockfd,int backlog) 函数listen将一个套接字转换为倾听套接字,执行成功返回0失败为一1。backlog设置请求队列的最大长度。(6)写入函数:int write( int fd,char *buf. int len)

45、 读取函数: int read(int fd,char*buf, intlen); 函数read和write从套接字读和写数据,成功返回数据量大小,否则返回-l。buf指定数据缓冲区,len指定接收或发送的数据量大小。 (7)创建子进程函数:pid-t fork (void) 在服务器端,一般在由fork()函数生成的子进程来调用数据传输函数,fork()函数是拷贝父进程的内存映象来创建子进程,事实上它返回两个进程控制号。对于父进程它返回子进程ID,对于子进程它返回0。 (8)关闭连接函数:int close(int sockfd) 函数close关闭一个套接字描述符,成功返回O,失败为-l。

46、 (9)取本机地址函数:struct hostent*gethostbyname( const char*hostname)函数gethostbyname查询指定的域名地址对应的IP地址,返回一个hostent结构的指针,如果不成功返回NULL。 (10)字节顺序转换函数: h表示”host,n表示”network”,s表示”short”,l表示”long”。 htons()-Host to NeLwork Short“ htonl()-“Host to Network Long“ htohs()-Network to Host Short“ ntom0-“Networkto Host Long“2.6.5 Socket编程的基本过程利用Socket编程,一般按照以下的基本过程:(1)建立一个Socket:(2)定义程序的socket使用:(3)配置Socket;(4)通过Socket传输数据;(5)通过Socket接受数据;(6)关闭Socket。2.7 HTTP协议2.7.1 HTTP URL掌握HTTP虽然不是必须的,但是

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号