ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:722.24KB ,
资源ID:2846042      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2846042.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c语言综合实验报告Http Server和精简的浏览器.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c语言综合实验报告Http Server和精简的浏览器.docx

1、c语言综合实验报告Http Server和精简的浏览器C语言实验报告-Http Server和精简的浏览器姓名:徐丽 班级:计算机一班 学号:201200131113目录C语言实验报告 1一、实验目的 31.1实验目标 31.2整体框架 3二、实验要求 3三、实验内容 43.1工程介绍 43.2实现功能 43.3实验分析 53.3.1实验思想 53.3.2实验流程 53.3.3浏览器端实现 53.3.4服务器端实现 63.3.5实验结果演示 8一、实验目的1.1实验目标 做一个简易B/S系统Http Server和精简的浏览器1.2整体框架浏览器与web服务器通信协议:传输层使用TCP 应用层

2、使用HTTP二、实验要求 总共分为两个程序:浏览器端、服务器端A、浏览器端是一个精简的浏览器,可以是用户界面也可以是控制台模式,基本功能如下:1、 能接收用户输入的使用IP地址的URL,如http:/127.0.0.1:80/test.html2、 能显示接收到的响应,包括响应头和响应文件。可以显示在控制台上,也可以显示在用户界面上,也可以调用系统浏览器打开3、 通信使用HTTP协议,至少应支持GETB、服务器端是一个精简的Web服务器(HTTP服务器),使用控制台模式,基本功能如下:1、 能接收用户浏览器端GET请求2、 能够读取服务器中存储的html文件,并返回给请求客户端3、 使用一种并

3、发技术 (多进程/多线程/多路IO复用)来提高处理请求的并发度4、 支持简单的日志功能:记录(访问ip、访问时间、访问资源)等信息可选扩展选项(可选):1、 服务器端支持错误处理,如要访问的URL不存在时回复404错误等2、 服务器端为了提高处理速度,可以使用缓存机制,包括文件缓存内存数据结构的设计3、 服务器端除了支持GET,可以支持更多的HTTP命令,并编写相应的测试用例4、 服务器端增加日志分析模块,能够显示不同时间段的访问量、平均响应时间等统计数据和性能数据5、 HTTP可以支持压缩,比如gzip。服务器端可以增加压缩支持6、 高级特性:实现CGI模块或模仿nginx和apache的其

4、他特性三、实验内容3.1工程介绍实验总目录下有两个文件夹以及两个测试用的HTML文件,文件夹中一个是browser,一个是server。browser中存放browser.c、browser.h以及用于读写文件的filerw.c与filerw.h以及Makefile文件。此外还有用于保存浏览器访问记录的data文件。Server中存放server.c、server.h、filerw.c与filerw.h、Makefile文件以及用于实现服务器日志功能,记载访客记录的data文件。3.2实现功能基础功能全部实现,比如运用多线程实现并发、简单日志功能、够读取服务器中存储的html文件,并返回给请求

5、客户端,通信使用http协议等。此外扩展功能实现了错误处理以及用于提高访问速度缓存机制。3.3实验分析3.3.1实验思想使用socket来实现浏览器与服务器之间的通信。为了建立socket,程序可以调用socket函数,该函数返回一个类似于文件描述符的句柄。通过socket调用返回一个socket描述符后,在使用socket进行网络传输以前,必须配置该socket。面向连接的客户程序使用connect函数来配置socket并与远端服务器建立一个TCP连接,其函数原型为:int connect(int sockfd, struct sockaddr *serv_addr,int addrlen)

6、。send()和recv()这两个函数用于面向连接的socket上进行数据传输。3.3.2实验流程首先打开server让它运作,然后打开browser,输入URL,请求就会生成报文(http协议)并发送给server。server接收到报文后,解析报文,并返回相应的应答报文以及请求资源。3.3.3浏览器端实现浏览器端首先输入UML串,然后解析串,得到IP地址、端口,及访问的文件请求。通过调用生成请求头的方法生成请求头,然后把相关的请求发给服务器,同时将访问记录写入文件,实现浏览器端记录历史数据的功能。然后把从服务器段发来的响应信息以及访问的资源内容显示出来。需要注意的一点是需要输入以下格式的资

7、源请求:http:/127.0.0.1::8080/test.html其中:http:/是固定不变的,本服务器现只支持http协议。127.0.0.1是要访问的web服务器所用的ip地址(本机ip地址),浏览器暂时不支持dns地址解析。8080端口是我在服务器中定义的默认端口。3.3.4服务器端实现由于TCP的服务器端socket基本流程为socket-bind-listen-accept-send/recv-closesocket,客户端基本流程为socket-connect-send/recv-closesocket。其中客户端connect函数应该是和服务器端的listen函数相互作用,

8、而不是accept函数。每当有一个客户端connect了,listen的队列中就加入一个连接,每当服务器端accept了,就从listen的队列中取出一个连接,转成一个专门用来传输数据的socket(accept函数的返回值),另外,当accept生成的那个专门的用来传输数据的socket没有被close(closesocket函数)掉之前,accept是不会释放那个socket的,也就是说在close之前,accept无法从listen的队列中取出一个新的连接转成传输专用的socket。所以我的服务器采用多线程处理来实现并发,就可以存在多个accept,每过来一个连接就建立一个线程,线程调用

9、与浏览器端通信的函数来处理此链接。并发处理更高效。因为实现了并发访问,因此关于写操作就需要用到互斥锁来控制同步。因此代码中最开始就初始化了互斥锁,在写操作前后加锁。 关于缓存机制的实现:原理就是,第一次访问时,从文件中读取资源后将资源存入缓存,当下次调用是直接从缓存中读取。关于错误处理的实现:最开始index初始化为0,在上一步缓存机制的for循环中,会将浏览器申请访问的资源与服务器中的资源进行比较,如果匹配会给index加1,如果index等于0,那么就可以判断出是404 error.3.3.5实验结果演示先运行server,然后运行browser,输入http:/127.0.0.1:8080/test.html 运行结果如下所示:Browser界面:先输出请求信息,然后输出服务器发来的相应信息以及请求的html文件的内容。这是服务器端显示接受到的浏览器发来的get 请求,最下面一句话显示是第一次请求该资源。缓存中还没有该资源。接下来是输入http:/127.0.0.1:8080/test2.html 显示的结果:服务器端:输入一个服务器端没有的资源显示的结果:输入l查看浏览记录:当再次访问test.html时,将从缓存中直接读数据,最后一行显示测试结果。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1