HTTP服务器实现文件上传与下载.pdf

HTTP服务器实现文件上传与下载.pdf

ID:48020597

大小:154.34 KB

页数:4页

时间:2020-01-20

HTTP服务器实现文件上传与下载.pdf_第1页
HTTP服务器实现文件上传与下载.pdf_第2页
HTTP服务器实现文件上传与下载.pdf_第3页
HTTP服务器实现文件上传与下载.pdf_第4页
资源描述:

《HTTP服务器实现文件上传与下载.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Http服务器实现文件上传与下载(一)一、引言大家都知道web编程的协议就是http协议,称为超文本传输协议。在J2EE中我们可以很快的实现一个Web工程,但在C++中就不是非常的迅速,原因无非就是底层的socket网络编写需要自己完成,上层的http协议需要我们自己完成,用户接口需要我们自己完成,如何高效和设计一个框架都是非常困难的一件事情。但这些事情Java已经在底层为我们封装好了,而我们仅仅只是在做业务层上的事情吧了。在本Http服务器实现中,利用C++库和socket原套接字编程和pthread线程编写。拒绝使用第三方

2、库。因为主要是让大家知道基本的实现方式,除去一些安全、高效等特性,但是不管怎么样,第三方商业库的基本原理还是一致的,只是他们对其进行了优化而已。在开始的编写时,我不会全部的简介Http的协议的内容,这样太枯燥了,我仅仅解释一些下面需要用到的协议字段。在写本文的时候,之前也有些迷惑,C++到底能干啥,到网上一搜,无非就是能开发游戏,嵌入式编程,写服务器等等。接着如果问如何编写一个服务器的话,那么这些网络水人又会告诉你,你先把基础学好,看看什么书,之后你就知道了,我只能呵呵了,在无目的的学习中,尽管看了你也不知道如何写的,因为尽管

3、你知道一些大概,但是没有一个人领导你入门,我们还是无法编写一个我们自己想要的东西,我写这篇博客主要是做一个小小的敲门砖吧,尽管网上有许多博客,关于如何编写HTTP服务器的,但是要不是第三方库acl,要么就是短短的几行代码,要么就是加入了微软的一些C#内容或者MFC,这些在我看来只是一些无关紧要的东西,加入后或许界面上你很舒服,但是大大增加了我们的学习成本,因为这些界面上的代码改变了我们所知道的程序流程走向,还有一些界面代码和核心代码的混合,非常不利于学习。二、HTTP协议在大家在浏览器的url输入栏上输入http://10.1

4、.18.4/doing时。浏览器向10.1.18.4服务器80端口的进程发送了如下的一个协议头,它是一个文本字符串。每行以r结束。表示回车换行。1GET/doingHTTP/1.12Host:10.1.18.43User-Agent:Mozilla/5.0(WindowsNT6.2;rv:40.0)Gecko/20100101Firefox/40.04Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.85Accept-Language

5、:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.36Accept-Encoding:gzip,deflate7Referer:http://10.1.18.4/8Connection:keep-alive所以知道其实我们发送了一个URL请求,其实被转化为了一个如上的一些字符串。在这里我简单的解释一下这个协议头表示什么,因为在网上你可以找到非常多的信息来解释它们。1)第一行中GET/doingHTTP1.1表示请求的方式是GET,URL是/doing,HTTP协议的版本是1.12)第二行中Host就是服务器

6、的IP3)第三行中User-Agent代表着你使用的是什么浏览器在什么系统上运行的。从上本可以这条信息显示是window上火狐浏览器发出的请求头4)第四行中Accept代表着该浏览器可以接受的信息格式,可以是文本,html,或者应用文件(二进制文件)。其中q代表权重,表示更愿意接受前面的信息。还有一些其他的内容,读者可以自己百度。5)以下的一些信息中,没有什么用到,我就不解释,看文本意义也大概知道一些信息。详细的请搜索网络。在最重要的是一本请求头什么时候表示结束呢,那就是一个空行表示结束。其实就是"r"结束。说了这么多可

7、能大家还是有点迷糊,知道这些那么在程序中又是怎么实现的呢。当初我也迷惑,现在我提出一个最简单的一种实现,就是直接连接一个字符串即可。在实际实现中我对其进行了分解,但是现在,我解释为如下编写程序:1char*str="GET/doingHTTP/1.1r2Host:10.1.18.4r3User-Agent:Mozilla/5.0(WindowsNT6.2;rv:40.0)Gecko/20100101Firefox/40.0r4Accept:text/html,application/xhtml+xml,

8、application/xml;q=0.9,*//*;q=0.8r5Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3r6Accept-Encoding:gzip,deflater7Referer:h

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。