计算机专业毕业论文(HTTP服务器设计).doc

上传人:仙人指路1688 文档编号:2397540 上传时间:2023-02-17 格式:DOC 页数:23 大小:128.50KB
返回 下载 相关 举报
计算机专业毕业论文(HTTP服务器设计).doc_第1页
第1页 / 共23页
计算机专业毕业论文(HTTP服务器设计).doc_第2页
第2页 / 共23页
计算机专业毕业论文(HTTP服务器设计).doc_第3页
第3页 / 共23页
计算机专业毕业论文(HTTP服务器设计).doc_第4页
第4页 / 共23页
计算机专业毕业论文(HTTP服务器设计).doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《计算机专业毕业论文(HTTP服务器设计).doc》由会员分享,可在线阅读,更多相关《计算机专业毕业论文(HTTP服务器设计).doc(23页珍藏版)》请在三一办公上搜索。

1、 学号1000017962100 密级_武汉大学毕业论文Linux下HTTP服务器设计院(系)名 称:计算机专 业 名 称 :计算机科学技术学 生 姓 名 :王雄指 导 教 师 :张文涛 郑 重 声 明 本人呈交的学位论文,是在导师的指导下,独立进行研究工作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本学位论文的研究成果不包含他人享有著作权的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。本学位论文的知识产权归属于培养单位。 本人签名: 王雄 日期: 2012/04/19 目录摘要vAbstractvi前言vii第一章 绪

2、 论11.1课题背景11.2 课题研究的目的和意义1第二章HTTP服务器的相关理论基础32.1 Linux系统简介32.2 TCP/IP协议分析42.2.1 TCP/IP协议概述42.2.2 网络层协议(IP协议)52.2.3 传输层协议(TCP和UDP)72.3 Linux下网络编程介绍92.3.1 Socket简介102.3.2 Socket创建102.3.3 Socket配置112.3.4 建立连接132.3.5 数据传输142.3.6 结束传输152.3.7 Socket编程的基本步骤162.3.8 I/O复用介绍162.3.9 Linux下的I/O复用支持172.3.10 Linux

3、下EPOLL的使用192.4 HTTP协议分析222.4.1 HTTP协议概述222.4.2 HTTP工作原理232.4.3 HTTP请求报文分析252.4.3 HTTP响应报文分析262.4.4 HTTP/1.0主要特征272.4.5 HTTP/1.1简介282.5 本章小结29第三章HTTP服务器设计303.1需求分析303.2 HTTP服务器模型303.3 HTTP服务器实现目标313.4 HTTP服务器设计思路313.5 HTTP服务器功能模块图323.6 HTTP服务器工作流程323.7 HTTP服务器核心设计思想353.8 本章小结35第四章 HTTP服务器实现364.1 网络连接

4、模块364.1.1 数据结构与接口设计364.1.2 epoll接口实现374.2 HTTP协议处理模块394.2.1 数据结构与接口设计394.3 HTTP服务提供模块424.3.1 数据结构与接口设计424.4 HTTP服务主程序444.5 HTTP服务器运行与测试454.5.1 HTTP服务器运行454.5.2 HTTP服务器测试464.6 本章小结49第五章 结论50第六章 总结与体会51谢辞52参考文献53附录.54软件使用说明.55摘要Linux操作系统是一个开放源代码的免费操作系统。它不仅有安全、稳定、成本低的特点,而且很少发现有病毒传播。HTTP服务器是web服务器的一种,它是

5、基于超文本传输协议HTTP的服务器。基于Linux具有稳定、可靠、安全和强大的网络功能这些优点,使得其主要应用于服务器领域。所以本文选择在Linux环境下实现一个HTTP服务器。本文研究了Linux下HTTP服务器的设计与实现。在Linux系统中采用HTTP协议和浏览器完成数据的传输。阐述了Linux套接字编程的方法、EPOLL等I/O复用编程模型。详细分析了HTTP协议内容以及客户端与服务器之间的通信过程。本文实现了客户端浏览器和服务器端以HTTP协议进行请求和响应的功能。同时对服务器进行了一个简单的压力测试。所有程序代码均为Linux下的C语言编程。关键字: Linux、HTTP服务器、H

6、TTP协议、EPOLLAbstractThe Linux operate system is a free operate system which opens a source codeNot only it has characteristics such as safe,stability,and the low cost,but also it seldom disseminates the VirusHTTP server is one of the Web servers and it bases on HTTP protocolAs the Linux operating sys

7、tem has the function of stable,reliable,safe and powerful network, it mainly used in servers.To realize a HTTP server in the Linux environment is the best choiceThis paper introduces design and implement of HTTP server in Linux operating systemIn the Linux system and browser used HTTP protocol for d

8、ata transmission. This paper expounds the method of Linux socket programming and EPOLL I/O multiplexing programming model.Detailed analysis the communication process between client and server and HTTP protocol.This paper realizes the function that the client browser requests and the server responds

9、by HTTP agreement.Make a simple pressure test on the server.All program code use the C language programming in Linux operating system.Keyword: Linux, HTTP Server, HTTP protocol, EPOLL前言随着Internet的迅速发展与普及,网络已经延伸到世界的各个角落。在该技术基础上发展起来的www,通过超文本向用户提供全方位的多媒体、超媒体信息,从而为全世界的Internet用户提供了一种获取信息、共享资源的途径。由于用户在通

10、过 Web 浏览器访问信息资源的过程中,无需再关心一些技术性的细节,而且界面非常友好,因而 Web 在Internet 上一推出就受到了热烈的欢迎,走红全球,并迅速得到了爆炸性的发展。 所以Web服务器在网络中的地位日益重要。当今社会中已有了许多知名的商用服务器,如Microsoft IIS、IBMWebSphere、BEA WebLogic、Apache、Tomcat等。但往往这些功能强大的服务器其结构也相当复杂,规模较大,在一些特定应用情景下(如嵌入式设备)就不太适合了。同时一个简单小巧的服务器也有利于我们学习网络编程的相关知识,对服务器原理也能有进一步的了解。本文设计实现了一个功能简单、

11、结构小巧的HTTP服务器,采用EPOLL多路I/O复用机制来实现并发服务。网络编程采用socket,服务器端创建套接字、绑定套接口、设置套接口为监听模式,将该监听套接字加入EPOLL事件列表,然后无限循环等待EPOLL返回,对返回事件的套接字进行读或写的处理。若为新连接,则将其加入到EPOLL事件列表;若为已有连接则读取其请求或向其发送响应;若客户端已断开或已发送完响应,服务器端就断开该连接,并将该套接字从EPOLL事件列表中移除。主要提供对静态请求的处理,解析客户端请求报文,回送请求的文件和响应报文的功能。 第一章 绪 论1.1课题背景随着Internet的迅速发展与普及,网络已经延伸到世界

12、的各个角落。在该技术基础上发展起来的www,通过超文本向用户提供全方位的多媒体、超媒体信息,从而为全世界的Internet用户提供了一种获取信息、共享资源的途径。随着计算机网络技术的发展,客户/服务器(Client/Server)结构逐渐向浏览器/服务器(Browser/Server)结构迁移,B/S方式已成为一种时尚,大部分网络应用系统都是以这种B/S方式与网络用户交换信息。B/S的基础是客户端要有一个浏览器程序,服务器端要有一个与之对应的Web服务器。所以,Web服务器在B/S方式下起着决定性的作用,且其应用地位日益重要。Linux系统凭借其开源、稳定、高效的特点,在服务器市场拥有较大的市

13、场份额。Linux作为网络服务器市场的佼佼者,网络服务应用是其精华与核心。当前商用的服务器大都规模比较大,功能强大的同时结构也比较复杂。自己实现一个简单小巧的HTTP服务器,对于理解服务器工作原理知识,或针对一些特定情景下的HTTP服务器应用来说,不失为一种比较好的方式。1.2 课题研究的目的和意义随着Internet的普及,网络已经深入到了我们的生活,跟我们息息相关。Linux系统作为网络应用的重要平台,如何更好的去学习和使用Linux系统便是我们要面对的问题。同时,作为当今互联网最主要的应用www服务,其为全世界的Internet用户提供了一种获取信息、共享资源的途径。www服务主要的提供

14、者就是其后端的HTTP服务器,所以如何更为高效的研究和学习Web服务器的相关知识,也是我们必须要关注的。本文在Linux环境下设计和实现了一个简单的HTTP服务器。使用socket库完成网络底层的通信,使用HTTP协议来和客户端进行数据传输,使用EPOLL多路I/O复用机制来完成并发服务,最后还进行了一个简单的并发性能测试。通过对此课题的研究学习,我们能更好的掌握Linux系统的使用,加深对HTTP协议的理解。同时能对服务器设计的相关理论和实践有一定了解。第二章HTTP服务器的相关理论基础本章主要介绍设计HTTP服务器的相关理论知识。包括Linux系统简介、TCP/IP协议分析、Linux下网

15、络编程介绍、HTTP协议分析。2.1 Linux系统简介简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。 Linux以它的高效性和灵活性著称。Linux模块化的设计结构,使得它既能在价格昂贵的工作站上运行,也能够在廉价的PC机上实现全部的Unix特性,具有多任务、多用户的能力。Linux是在GNU(GNUs Not Unix)公共许可权限下免费获得的,是一个符合POSIX标准的操作系统。Linux操作系

16、统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的XWindows图形用户界面,如同我们使用WindowsNT一样,允许我们使用窗口、图标和菜单对系统进行操作。Linux具有Unix的优点:稳定、可靠、安全,有强大的网络功能。在相关软件的支持下,可实现WWW、FTP(File Transfer Protoc01)、DNS(Domain Name System)、DHCP(Dynamic Host Configure Protocol,动态主机配置协议)、Email等服务,还可作为路由器使用,利用ipchains/iptabl

17、es可构建NAT(Network Address Translation,网络地址转换)及功能全面的防火墙。现在,Linux已经成为了一种受到广泛关注和支持的操作系统。包括国际商用机器公司和惠普、戴尔在内的一些计算机业巨头也陆续支持Linux,并且成立了一些组织支持其发展,如Open Invention Network(OIN)(成员有IBM,索尼,NEC,Philips,Novell,Red hat等)购买了微软专利,允许任何个体以开放的原则使用。很多人认为,和微软Windows相比,作为自由软件的Linux具有低软件成本,高安全性,更加可信赖等优势,但是同时却需要更多的人力成本。 2.2

18、TCP/IP协议分析由于当今世界上的绝大部分网络程序都是建立TCP/IP(传输控制协议/网际协议)协议的基础上的。所以有必要对TCP/IP的协议内容有所了解。这一节主要对TCP/IP协议进行分析。2.2.1 TCP/IP协议概述TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:

19、应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。传输层:在此层中,它提供了节点间的数据传送,应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等。如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。链路接口层:接收IP数据报并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,

20、对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。 HTTP客户端TCPIP以太网驱动HTTP服务器TCPIP以太网驱动HTTP协议TCP协议IP协议以太网协议应用层传输层网络层链路层 图2-1 TCP/IP层次结构图2.2.2 网络层协议(IP协议)IP协议是网络层的主要协议,是Internet最重要的协议。在IP协议中规定了在Internet上进行通信时应遵守的规则。例如IP数据包的组成、路由器如何将IP数据包送到目的主机等。IP协议在主机和网络之间寻址和路由数据包。IP是一个无连接的协议,主要负责在主机间寻址并为数据包设定路由,在交换

21、数据前它并不建立会话。因为它不保证正确传递。另一方面,数据在被收到时,IP不需要收到确认,所以它是不可靠的。IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。IP协议的数据格式如下:版本号(4)IHL(4)服务类型(8)数据包长度(16)标识(16)Flag(3)偏移量(13)生存时间(8)传输协议(8)校验和(16)源地址(32)目的地址(32)选项(8)+ 填充数据图2-2 网际协议IP数据格

22、式版本号:协议的版本号,不同版本的协议格式或语言可能不同,现在常用的是IPV4。生存时间(Time To Live,TTL):8bit,即IP分组在IP网络中的寿命。协议(Protocol):8bit,指明IP分组中数据字段携带的是哪种高层协议的数据。首部检查和(header checksum):16bit。此字段只用于检查IP分组的首部,不包括数据字段。源IP地址(source IP address):32bit,填入源主机的IP地址。目标IP地址(destination IP address):32bit,填入目标主机的IP地址。可选字段(IP options):可选,可变长,1字节40字

23、节,但加上填充字段(填充0)后两个字段长度必须为4Bytes的整数倍。IP地址标识着网络中一个系统的位置。我们知道每个IP地址都是由两部分组成的:网络号和主机号。其中网络号标识一个物理的网络,同一个网络上所有主机需要同一个网络号,该号在互联网中是唯一的;而主机号确定网络中的一个工作端、服务器、路由器及其它TCP/IP客户端。对于同一个网络号来说,主机号是唯一的。每个TCP/IP主机由一个逻辑IP地址确定。2.2.3 传输层协议(TCP和UDP)1. TCP协议传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议,由IETF的RFC 793说明。它在传送数据时是分段

24、进行的,主机交换数据必须建立一个会话。它用比特流通信,即数据被作为无结构的字节流。通过每个TCP传输的字段指定顺序号,以获得可靠性。如果一个分段被分解成几个小段,接收主机会知道是否所有小段都已收到。通过发送应答,用以确认别的主机收到了数据。对于发送的每一个小段,接收主机必须在一个指定的时间返回一个确认。如果发送者未收到确认,数据会被重新发送;如果收到的数据段损坏,接收主机会舍弃它,因为确认未被发送,发送者会重新发送分段。TCP端口为信息的传送指定端口,端口号小于256的定义为常用端口。下图展示了TCP首部的数据格式。如果不计任选(Options)字段,那么,它的大小是20个字节。 图2-3 T

25、CP包头格式TCP协议通过三个报文段完成连接的建立,这个过程称为三次握手(three-way handshake),过程如下图所示。 (1)客户机向服务器发送一个TCP数据包,表示请求建立连接。(2)服务器收到了数据包,知道这是一个建立请求的连接,服务器也通过发回具有以下项目的数据包表示回复:同步标志置位、即将发送的数据段的起始字节的顺序号、应答并带有将收到的下一个数据段的字节顺序号。(3)客户机收到了服务器的TCP,知道是从服务器来的确认信息。于是客户机也向服务器发送确认信息。至此客户端完成连接。(4)服务器收到确认信息,也完成连接。 图2-4 TCP建立连接(三次握手)TCP协议建立一个连

26、接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。具体过程如下图所示。 图2-5 TCP断开连接2. UDP协议UDP 是User Datagram Protocol的简称,中文名是用户数据包协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。用户数据报协议UDP提供了无连接的数据报服务。它适用于无须应答并且通常一次只传送少量数据的应用软件。2.3 Linux下网络编程介绍Linux下的网络编程主要是基于Linux提供的Socket API 函数来进行的。所以,Linux下的网络编程的基础就是对socket

27、API函数的掌握,就必须理解和学会使用socket接口。同时针对并发服务,Linux下提供了I/O复用等高效的形式来满足并发的要求。2.3.1 Socket简介Socket接口是TCP/IP网络的API。Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学习Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的 Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个

28、类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket (SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。 2.3.2 Socket创建为了创建Socket,程序可以调用Socket函数,该函数返回一个类似于文件描述符的句柄。socket函数原型为: int socket(int domain,

29、int type, int protocol);domain指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP/IP协议族);type参数指定socket的类型: SOCK_STREAM 或SOCK_DGRAM,Socket接口还定义了原始Socket(SOCK_RAW),允许程序使用低层协议;protocol通常赋值“0”。 Socket()调用返回一个整型socket描述符,你可以在后面的调用使用它。Socket描述符是一个指向内部数据结构的指针,它指向描述符表入口。调用Socket函数时,socket执行体将建立一个Socket,实际上建立一个Socket意味着为一个So

30、cket数据结构分配存储空间。Socket执行体为你管理描述符表。两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。Socket数据结构中包含这五种信息。 2.3.3 Socket配置 通过socket调用返回一个socket描述符后,在使用socket进行网络传输以前,必须配置该socket。面向连接的socket客户端通过调用Connect函数在socket数据结构中保存本地和远端信息。无连接socket的客户端和服务端以及面向连接socket的服务端通过调用 bind函数来配置本地信息。Bind函数将socket与本机上的一个端

31、口相关联,随后你就可以在该端口监听服务请求。Bind函数原型为:int bind(int sockfd,struct sockaddr *my_addr, int addrlen);Sockfd是调用socket函数返回的socket描述符,my_addr是一个指向包含有本机IP地址及端口号等信息的sockaddr类型的指针;addrlen常被设置为sizeof(struct sockaddr)。struct sockaddr结构类型是用来保存socket信息的: struct sockaddr unsigned short sa_family; /* 地址族, AF_xxx */ char

32、sa_data14; /* 14 字节的协议地址 */;sa_family一般为AF_INET,代表Internet(TCP/IP)地址族;sa_data则包含该socket的IP地址和端口号。另外还有一种结构类型: struct sockaddr_in short int sin_family; /* 地址族 */ unsigned short int sin_port; /* 端口号 */ struct in_addr sin_addr; /* IP地址 * unsigned char sin_zero8; /* 填充0 以保持与struct sockaddr同样大小 */;这个结构更方便

33、使用。sin_zero用来将sockaddr_in结构填充到与struct sockaddr同样的长度,可以用bzero()或memset()函数将其置为零。指向sockaddr_in 的指针和指向sockaddr的指针可以相互转换,这意味着如果一个函数所需参数类型是sockaddr时,你可以在函数调用的时候将一个指向 sockaddr_in的指针转换为指向sockaddr的指针;或者相反。使用bind函数时,可以用下面的赋值实现自动获得本机IP地址和随机获取一个没有被占用的端口号: my_addr.sin_port = 0; /* 系统随机选择一个未被使用的端口号 */ my_addr.si

34、n_addr.s_addr = INADDR_ANY; /* 填入本机IP地址 */通过将my_addr.sin_port置为0,函数会自动为你选择一个未占用的端口来使用。同样,通过将my_addr.sin_addr.s_addr置为INADDR_ANY,系统会自动填入本机IP地址。注意在使用bind函数是需要将sin_port和sin_addr转换成为网络字节优先顺序;而sin_addr则不需要转换。计算机数据存储有两种字节优先顺序:高位字节优先和低位字节优先。Internet上数据以高位字节优先顺序在网络上传输,所以对于在内部是以低位字节优先方式存储数据的机器,在Internet上传输数据

35、时就需要进行转换,否则就会出现数据不一致。下面是几个字节顺序转换函数:htonl():把32位值从主机字节序转换成网络字节序htons():把16位值从主机字节序转换成网络字节序ntohl():把32位值从网络字节序转换成主机字节序ntohs():把16位值从网络字节序转换成主机字节序 Bind()函数在成功被调用时返回0;出现错误时返回“-1”并将errno置为相应的错误号。需要注意的是,在调用bind函数时一般不要将端口号置为小于1024的值,因为1到1024是保留端口号,你可以选择大于1024中的任何一个没有被占用的端口号。2.3.4 建立连接第六章 总结与体会毕业设计最初的时候,主要是

36、对相关资料的收集和理论知识的学习。在这个阶段,最好是同时结合资料和源码一起来看,效果会比较好,学习效率较高。看资料和教程是从细节和基础上去学习知识,而看相关程序的源码则是从整体和实现上去了解一个系统。这样才能做到“见树又见林”。学习理论知识可以使我们掌握最基础的知识,能更深入的了解设计的底层实现。当在具体实现的时候,可以以模块或分层次的思想来分析系统。重点掌握核心的模块,其他模块可以采用现有的类库或开源的实现,这样可以提高开发的效率。软件开发其实对于代码量的积累是很重要的。当积累了一定的代码量后,看问题就会比较有程序的思想,能够从层次,模块的角度来分析问题,这样思路就比较清晰了。整个毕业设计的

37、过程其实就是经历了一个项目的生命周期。从最初的选题确定后,开始进行相关资料的收集和理论知识的学习,接着确定自己的方案设计和系统整体结构,然后开始编码实现,调试代码,直至顺利运行,再进行性能测试,最后写出论文。这些步骤其实和一个软件项目的开发是很类似的。软件的开发同样会有这些步骤,需求分析,设计,编码,测试,发布,文档撰写等。当完成了整个毕业设计后,对如何把握一个项目的整体有了一点基本的认识。同时从中体会到时间控制和进度安排都是很重要的,任何任务和项目都是有时间期限的,自己的想法和设计都是得基于按时完成这个前提的。四年的大学时光即将结束,心中还是有不舍。回顾四年的学习时光,感觉自己还是过的蛮充实

38、的。做过很多有意思的事,也认识了一帮好友与同窗。无论是做人还是学习,我的老师和同学朋友们都给了我很大的帮助,我非常感谢他们。作为即将踏上工作、步入社会的我,我想我会更加努力奋斗,不让我的家人、朋友、老师们失望。最后,愿大家在今后的日子里,一帆风顺,身体健康。谢辞四年的读书生活在这个季节即将划上一个句号,而于我的人生却只是一个逗号,我将面对又一次征程的开始。四年的求学生涯在师长、亲友的大力支持下,走得辛苦却也收获满囊,在论文即将付梓之际,思绪万千,心情久久不能平静。 伟人、名人为我所崇拜,可是我更急切地要把我的敬意和赞美献给一位平凡的人,我的导师。我不是您最出色的学生,而您却是我最尊敬的老师。您

39、治学严谨,学识渊博,思想深邃,视野雄阔,为我营造了一种良好的精神氛围。授人以鱼不如授人以渔,置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了宏伟的学术目标,领会了基本的思考方式,从论文题目的选定到论文写作的指导,经由您悉心的点拨,再经思考后的领悟,常常让我有“山重水复疑无路,柳暗花明又一村”。 感谢我的爸爸妈妈,焉得谖草,言树之背,养育之恩,无以回报,你们永远健康快乐是我最大的心愿。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚谢意! 同时也感谢学院为我提供良好的做毕业设计的环境。 最后再

40、一次感谢所有在毕业设计中曾经帮助过我的良师益友和同学,以及在设计中被我引用或参考的论著的作者感谢培养教育我的武汉大学,武汉大学浓厚的学术氛围,舒适的学习环境我将终生难忘!祝母校蒸蒸日上,永创辉煌!祝校长财源滚滚,仕途顺利!感谢对我倾囊赐教、鞭策鼓励的恩师。祝恩师们身体健康,家庭幸福!参考文献1 JAMES F.KUROSE,KEITH W.ROSS.计算机网络自顶向下方法与Internet特色. 北京:机械工业出版社,2005年2 W.RICHARD STEVENS,BILL FENNER,ANDREW M.RUDOFF. UNIX网络编程 第1卷套接口API. 北京:清华大学出版社,2006

41、年6月第3版3 W.RICHARD STEVENS,STEPHEN A.RAGO. UNIX环境高级编程(第2版).北京:人民邮电出版社,2006年4 鸟哥.鸟哥的Linux私房菜基础学习篇.北京:人民邮电出版社,2007年9月5 林宇,郭凌云.Linux网络编程.北京:人民邮电出版社,2000.45656 郑齐,方思行.通用多线程服务器的设计与实现.计算机工程与应用,2003.16:1461477 胥光辉等译W.RICHARD STEVENS. TCP/IP详解(第l卷):协议北京:机械工业出版社,200015258 张南平,徐静. 基于进程池的Linux并发服务器的研究. 计算机与数字工程

42、,2009.1:1591619 邵芬,于国防,张宁. 基于多线程的HTTP服务器的设计与实现.工矿自动化,2007.8:1341369 孙霞. 基于java的高效多线程HTTP服务器的研究及实现. 福建电脑,2003.11:383910 李磊. 嵌入式WEB服务器软件的设计与实现. 计算机工程与设计2003(10) 11白小明, 邱桃荣.基于Linux的嵌入式实时操作系统的研究. 微计算机信息, 2006,2-2:78-7.12车飞锋. 基于嵌入式Linux的Web和邮件服务器的设计与实现. 西安石油大学:计算机应用技术,2008 13曲波,吴兆芝. Linux环境下面向Web服务器的设计与实现. 小型微型计算机系统, 2002 14 Dan Kegel.The C10K problem. 15Jeff Darcy. High-Performance Server Design. 附录附录1 软件使用说明请查看理论基础

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号