重庆科技学院
《XXXX 设计》
课程设计报告
学 院: 电气与信息工程学院_ 专业班级: 计科普 10-02
学生姓名:
唐柳
学 号:
201044189
设计地点(单位)______
_I520______
__ __
设计题目:
WEB 服务器
完成日期: 2013 年 1 月 12 日
指导教师评语: ______________________
______________
___________________________________________________________________________
___________________________________________________________________________
成绩(五级记分制):______ __________
指导教师(签字):________ ________
摘要
本专题将针对 HTTP 协议定义一个 Web 服务器,我们平常浏览网页通过在浏
览器中输入一个网址就可以看到我们想要的网页,这个过程中浏览器只是一个客
户端,浏览器(应用层应用程序)通过 HTTP 协议把用户请求发送到服务端, 服
务器接受到发送来的 HTTP 请求,然后对请求进行处理和响应,最后把响应的内
容发送给客户端(浏览器这里充当了用户代理的客户端),浏览器再对接受到的
响应内容(一般是 HTML 文件)进行解释并且显示出来。这就是一次完整的用户
请求/响应模型,本专题所讲述的是一个简单的 Web 服务器,其他一些大型的 Web
服务器(IIS,Apache)也是这样的一个原理, 本专题只是简单讲述 Web 服务器
的实现原理。
关键字:HTTP 协议 客户端 web 服务器
I
目录
1.概要 ............................................................. 1
1.1 C#软件实现原理 ..............................................1
1.2 HTTP 协议的作用原理 ......................................... 1
2.界面设计 ......................................................... 3
2.1 服务器界面 ..................................................3
2.2 服务器界面控件 ..............................................3
3.实现流程 ......................................................... 5
4.服务器编程 ....................................................... 6
4.1 设计 HTTP web 服务器 .........................................6
4.1.1 创建 TcpListener 对象 ...................................6
4.1.2 接受客户端请求 .........................................6
4.1.3 读取请求内容 ...........................................7
5.测试 web 服务器 .................................................. 13
5.1 实验准备 ...................................................13
5.1.1 创建文件夹 ........................................... 13
5.1.2 保存测试网页及图片 ................................... 14
5.2 访问 web 服务器虚拟目录下的网页和图片 .......................15
5.2.1 访问网页显示不全面 ....................................15
5.2.2 访问网页中的图片 ..................................... 17
5.2.3 访问网页正常 ......................................... 17
5.3 访问网页错误信息 ...........................................19
6.C#安装软件设计 .................................................. 20
7.总结 ............................................................ 24
致谢 .............................................................. 25
参考文献 .......................................................... 26
II
1.概要
一个 Web 服务器也被称为 HTTP 服务器,它通过 HTTP 协议与客户端通信。
这个客户端通常指的是 Web 浏览器。
1.1 C#软件实现原理
C#实现 WEB 服务器、HTTP 协议的作用原理:
WWW 是以 Internet 作为传输媒介的一个应用系统,WWW 网上最基本的传输单
位是 Web 网页。WWW 的工作基于客户机/服务器计算模型,由 Web 浏览器(客户机)
和 Web 服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。
HTTP 协议是基于 TCP/IP 协议之上的协议,是 Web 浏览器和 Web 服务器之间的应
用层协议,是通用的、无状态的、面向对象的协议。
1.2 HTTP 协议的作用原理
HTTP 协议的作用原理包括四个步骤:
1)连接:Web 浏览器与 Web 服务器建立连接,打开一个称为 socket(套接字)
的虚拟文件,此文件的建立标志着连接建立成功。
2)请求:Web 浏览器通过 socket 向 Web 服务器提交请求。HTTP 的请求一般
是 GET 或 POST 命令(POST 用于 FORM 参数的传递)。GET 命令的格式为:GET 路
径/文件名 HTTP/1.0。文件名指出所访问的文件,HTTP/1.0 指出 Web 浏览器使
用的 HTTP 版本。
3)应答:Web 浏览器提交请求后,通过 HTTP 协议传送给 Web 服务器。Web
服务器接到后,进行事务处理,处理结果又通过 HTTP 传回给 Web 浏览器,从而
在 Web 浏览器上显示出所请求的页面。
例:假设客户机与 www.172.19.68.117:8080/cq.htm 建立了连接,就会发送
GET 命令:GET cq.htm HTTP/1.0。主机名为 172.19.68.117 的 Web 服务器从它
的文档空间中搜索子目录的文件 cq.htm。如果找到该文件,Web 服务器把该文件
内容传送给相应的 Web 浏览器。
为了告知 Web 浏览器传送内容的类型,Web 服务器首先传送一些 HTTP 头信
息,然后传送具体内容(即 HTTP 体信息),HTTP 头信息和 HTTP 体信息之间用一
个空行分开。
1
常用的 HTTP 头信息有:
① HTTP 1.0 200 OK:这是 Web 服务器应答的第一行,列出服务器正在运行
的 HTTP 版本号和应答代码。代码“200 OK”表示请求完成。
② MIME_Version:1.0:它指示 MIME 类型的版本。
③ content_type:类型:这个头信息非常重要,它指示 HTTP 体信息的 MIME
类型。如:content_type:text/html 指示传送的数据是 HTML 文档。
④ content_length:长度值:它指示 HTTP 体信息的长度(字节)。
4)关闭连接:当应答结束后,Web 浏览器与 Web 服务器必须断开,以保证其
它 Web 浏览器能够与 Web 服务器建立连接。
2
2.界面设计
2.1 服务器界面
作为服务器,即使是 GUI 界面,也应当简洁为好。本程序将服务器配置功能
以图形方式提供,但对于服务运行过程中的状态监控,仍旧采用字符显示方式。
本次使用了一个 ListBox 列表控件,将它的背景设置为黑色,并将其设置成为不
可选择,以模拟 Dos 命令行效果。界面显示如下图所示;
图 2.1 界面显示
2.2 服务器界面控件
软件工程名为“MyWebServer”,程序界面上个控件的属性描述如下表所示:
表 1-1 web 服务器界面控件描述
名称
控件类型 功能描述
frmWebServer
Form
程序主窗体
listBoxStatusView
ListBox 服务状态控制栏
tbxWebServerIp
TextBox 填写服务 IP 地址
tbxWebServerPort
TextBox 填写服务端口号
tbxWebRoot
TextBox 设置填写根目录
3
btnStartStop
Button
服务“启动/停止”按钮
4
3.实现流程
使用 TcpListener 类的方法实现,流程如下图所示。
(1)首先 web 服务器以 TcpListener 类建立服务器 socket,对某个端口进
行监听,实验中的端口号是 8080,以等待客户端连接该端口。
(2)处理客户端的连接:建立客户端连接,可以使用 TcpListener 类的
AcceptSocket 方法或者是 AcceptTcpClient 方法。AcceptSocket 方法可以接受
客户端的请求,并且建立与客户端的连接的 Socket。
(3)处理完数据传送或接受:使用 Socket 类的 Send 与 Receive 方法传输
及接受数据。
(4)完毕时,关闭 web 浏览器和 web 服务器的 Socket 连接。
图 3.1 web 服务器实现流程
5