logo资料库

C语言浏览器和http服务器实验报告(含代码).doc

第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
资料共22页,剩余部分请下载后查看
C语言综合实验报告
一.实验任务
1.实验目的
2.实验要求
3.具体要求和帮助
二.实验过程
1.试验环境
2.实验说明
3.实验成果
4.程序运行截图
三.源码和其他文件说明
1.源码
2.其他文件
四.实验总结
五.参考资料
C 语言综合试验报告 C 语言综合实验报告 学号:20120013 班级:计算机学院 12 级 2 班 姓名: 目录: C 语言综合实验报告 .........................................................................................................................1 实验任务 ............................................................................................................................ 2 一. 1.实验目的 ................................................................................................................................. 2 2.实验要求 ................................................................................................................................. 2 3.具体要求和帮助 ..................................................................................................................... 2 实验过程 ............................................................................................................................ 5 1.试验环境 ................................................................................................................................. 5 2.实验说明 ................................................................................................................................. 5 3.实验成果 ................................................................................................................................. 5 4.程序运行截图 ......................................................................................................................... 5 源码和其他文件说明........................................................................................................8 1. 源码 .................................................................................................................................... 8 2. 其他文件 .......................................................................................................................... 20 实验总结 .......................................................................................................................... 21 参考资料 .......................................................................................................................... 22 四. 五. 二. 三. 1 / 22
C 语言综合试验报告 一.实验任务 1.实验目的 做一个简易 B/S 系统——Http Server 和精简的浏览器。 2.实验要求 总共分为两个程序:浏览器端、服务器端 A、浏览器端是一个精简的浏览器,可以是用户界面也可以是控制台模式,基本功能如下: (1)能接收用户输入的使用 IP 地址的 URL,如 http://127.0.0.1:80/test.html (2)能显示接收到的响应,包括响应头和响应文件。可以显示在控制台上,也可以显示在 用户界面上,也可以调用系统浏览器打开 (3)通信使用 HTTP 协议,至少应支持 GET B、服务器端是一个精简的 Web 服务器(HTTP 服务器),使用控制台模式,基本功能如下: (1)能接收用户浏览器端 GET 请求 (2)能够读取服务器中存储的 html 文件,并返回给请求客户端 (3)使用一种并发技术 (多进程/多线程/多路 IO 复用)来提高处理请求的并发度 (4)支持简单的日志功能:记录(访问 ip、访问时间、访问资源)等信息 可选扩展选项(可选): 1、 服务器端支持错误处理,如要访问的 URL 不存在时回复 404 错误等 2、 服务器端为了提高处理速度,可以使用缓存机制,包括文件缓存内存数据结构的设计 3、 服务器端除了支持 GET,可以支持更多的 HTTP 命令,并编写相应的测试用例 4、 服务器端增加日志分析模块,能够显示不同时间段的访问量、平均响应时间等统计数据 和性能数据 5、 HTTP 可以支持压缩,比如 gzip。服务器端可以增加压缩支持 6、 高级特性:实现 CGI 模块或模仿 nginx 和 apache 的其他特性 3.具体要求和帮助 (1)浏览器访问完整版流程 2 / 22
C 语言综合试验报告 其中, a、DNS 是可选,可以直接用 IP 地址代替网址; b、浏览器显示界面可选,非重点,可以在控制台显示 html 文件内容。其他步骤不可简 化。 (2)HTTP 协议基础知识 参考网址:http://www.360doc.com/content/13/0217/11/9318309_266094744.shtml 简化处理,但我们至少要支持 GET 方式的请求。 请求报文构成: 3 / 22
C 语言综合试验报告 like Gecko) 我们访问 www.baidu.com 的请求如下(通过 Wireshark 抓包): GET / HTTP/1.1 Host: www.baidu.com Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, Chrome/21.0.1180.92 Safari/537.1 LBBROWSER Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 xxxxxxxxxxxxxxx: gzip,deflate,sdch Accept-Language: zh-CN,zh;q=0.8 Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3 Cookie: BAIDUID=E21378CBAB746D5B00E45348BBD091FB:FG=1; ...... 响应报文如下: HTTP/1.1 200 OK Date: Tue, 02 Apr 2013 01:29:24 GMT Server: BWS/1.0 Content-Length: 7083 Content-Type: text/html;charset=utf-8 Cache-Control: private Content-Encoding: gzip Vary: Accept-Encoding Expires: Tue, 02 Apr 2013 01:29:24 GMT Set-Cookie: H_PS_PSSID=2121_1431_1944_1788; path=/; domain=.baidu.com Connection: Keep-Alive [html 网页数据] 百度支持 gzip,我们可以不压缩数据。使用标准浏览器来验证我们的 web 服务器是否正确。 可以通过访问广域网上的网站如 ping www.baidu.com 获得的 ip 来验证我们自制浏览器的正 确性。 (3)Socket 编程基本知识 Linux socket 参考网站:http://blog.csdn.net/fengyv/article/details/659980 socket 在 linux gcc、windows gcc、VS 中的使用方法略有不同,资料自己查找。推荐使用 Linux gcc。 4 / 22
C 语言综合试验报告 (4)服务器端的并发处理 服务器为了应对同时多个请求到达的情况,必须支持并发,可选基本模式有三种:多进程、 多线程、多路复用 IO 接口。在 Linux 下的代表机制分别为:fork、pthread、epoll/select/poll。 著名的 Apache HTTP Server 支持多进程和多线程,而刚刚崛起的 Nginx 在 Linux 下默认使用 的是 epoll。下面是参考网站: fork http://blog.csdn.net/lingdxuyan/article/details/4993883 pthread http://blog.csdn.net/handyhuang/article/details/8301058 epoll http://blog.csdn.net/ljx0305/article/details/4065058 select http://www.douban.com/note/265840990/?type=like 使用 select 实现的 echo (linux 版)http://blog.csdn.net/god2469/article/details/8761346 使用 select 的 TCP 示例(linux+windows):http://www.zeali.net/entry/13 二.实验过程 1.试验环境 Ubuntu14.10(VMware 中)+gcc 2.实验说明 仔细阅读实验要求后,考虑到实际情况是单人开发而且时间有限所以决定: (1) 浏览器端是一个精简的浏览器,不做图形界面而使用控制台模式,符合老师实验的 基本要求,代码也会比较简洁。 (2) 浏览器端并发处理的技术上我选择的是多线程方式,因为它比用多进程方式占用的 资源要少很多而且我比较熟悉。 (3) 出于简易考虑,浏览器端和服务器端源码都只有一个.c,直接在终端 gcc 编译。 3.实验成果 浏览器端和服务器端编码编译通过运行成功。实验基本要求全部实现,扩展功能部分实 现,包括: (1)服务器端支持错误处理,如要访问的 URL 不存在时回复 404 错误等 (2)服务器端为了提高处理速度,可以使用缓存机制,包括文件缓存内存数据结构的设计 4.程序运行截图 (1)浏览器端 查看记录(输入 r): 5 / 22
C 语言综合试验报告 访问 http://127.0.0.1:8080/test0.html(输入访问内容): 调用 firefox 打开(自动): 6 / 22
C 语言综合试验报告 未找到文件: 访问 http://www.baidu.com(输入百度域名) 退出(输入 e) (4) 服务器端(无手动操作) 7 / 22
C 语言综合试验报告 三.源码和其他文件说明 文件说明:总文件夹 cfinalexp 下包含 browser 和 server 两个文件夹。browser 文件夹包 含 browser.c(浏览器端源码),browserdoc.data(浏览器访问记录),recv.html(保存接 收到的.html 内容);server 文件夹包含 server.c(服务器端源码),serverdoc.data(服务 器日志),test0.html,test1.html(html 资源),notfound.html(错误返回 html)。 1. 源码 源码包括 browser.c 和 server.c (1) browser.c 8 / 22
分享到:
收藏