WEB浏览器

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

   一、明确你所要作的WEB浏览器的核心点在哪!程序员

        因为我所作的课设是计算机网络,核心点固然在于发送请求与响应请求,至于HTML的解析、JS的渲染,这对于数据结构与算法来讲是一个很好的实践机会!之后有空时能够补充一下web

   二、HTTP协议的RFC文档算法

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

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

        中文:百度不少翻译版本,看我的喜欢缓存

         该文档有105页,若是只用于本次课设能够只看(Range,Connection,If-Modified-Since、响应状态码等)服务器

   三、SOCKET编程网络

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

        b、 步骤:

        没有实现缓存的步骤:

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

        实现了缓存的步骤:

        一、建立SOCKET对象--域名解析获得目的IP--链接CONNECT到目的主机--

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

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

    四、具体能够参照:

         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浏览器是个很能够挖掘我的潜力的项目!要好好利用,挖掘本身潜在的能力,与发现本身的闪光点,这很重要!暑假有空时再一步完善吧!加油!

相关文章
相关标签/搜索