WEB浏览器

夏日的雨往往总是暂时的狂妄,只要坚持住了,会有看到彩虹的一刻!刚刚计算机网络课程设计答辩完,正好来了场大雨,那就把这三天以来做WEB浏览器的过程简单的记录下吧,愿减少后来者走弯路~

1、明确你所要做的WEB浏览器的核心点在哪!

由于我所做的课设是计算机网络,核心点当然在于发送请求与响应请求,至于HTML的解析、JS的渲染,这对于数据结构与算法来说是一个很好的实践机会!以后有空时可以补充一下

2、HTTP协议的RFC文档

对于HTTP协议的RFC文档,目前最新的是HTTP1.1版本,它比1.0版本增加了分层代理,缓存的作用以及对稳定连接和虚拟主机的需求

英文:http://www.faqs.org/rfcs/rfc2616.html#b

中文:百度很多翻译版本,看个人喜欢

该文档有105页,如果只用于本次课设可以只看(Range,Connection,If-Modified-Since、响应状态码等)

3、SOCKET编程

a、非阻塞式与阻塞式编程:主要的区别在于非阻塞式在每请求一个资源时,无法该资源是否可用都有一个返回值,而阻塞式只需要被阻塞起来,一直等待直到资源可用,也不返回任何值!当我们在做WEB浏览器时,我们必须所服务的网络是如何的,如果网络相对拥塞,那么采用非阻塞式的会相对好一些,而且我们可以利用HTTP协议中的Content-Range对所请求的资源进行规定本次是请求的是从哪里到哪里,这对于下载文档来说也是相当重要的!非阻塞式SOCKET编程写得比较好的有:http://www.embedu.org/Column/Column235.htm

b、 步骤:

没有实现缓存的步骤:

创建SOCKET对象--域名解析得到目的IP--连接CONNECT到目的主机--发送请求报文--接收响应报文--关闭SOCKET

实现了缓存的步骤:

1、创建SOCKET对象--域名解析得到目的IP--连接CONNECT到目的主机--

2、查看本地缓存中是否有相对应的URL缓存,如果有的话,把缓存中的时间Last-Modified的值填入请求报文的If-Modified-Since头域值中。再发送报文

3、服务器接收到请求后将请求中Last-Modified的值与所请资源最后一个修改时间比较,如果一致的话则返回304表示资源没有改变,如果不一致的话,则按照常规进行发送响应(200:成功返回页面 ,206:部分发送)

4、具体可以参照:

Socket编程Http下载的简单实现:http://www.cnblogs.com/dejavu/archive/2013/01/08/2850265.html

C++ 用socket封装成http:http://blog.csdn.net/itjobtxq/article/details/6234690

如何使用SOCKET 发送HTTP1.1 GET POST请求包:http://blog.csdn.net/huangxy10/article/details/7662322

HTTP Get,Post请求详解:http://blog.chinaunix.net/uid-25808509-id-3047968.html

C++文件读写:http://www.cnblogs.com/ifeiyun/articles/1573134.html


2013/7/2--13:06:29

好快就这样结束我的大三!感觉大三第二学期真心没有学到什么,当程序员的,不应该如此浮躁啊,暑假没去实习也没什么的,重要的是计划与执行计划,重要的是快乐地生活!!!WEB浏览器是个很可以挖掘个人潜力的项目!要好好利用,挖掘自己潜在的能力,与发现自己的闪光点,这很重要!暑假有空时再一步完善吧!加油!
原文链接: https://www.cnblogs.com/yihua/p/3166656.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/94313

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午2:33
下一篇 2023年2月10日 上午2:34

相关推荐