精华内容
下载资源
问答
  • 微型HTTP服务器-HttpMockServerTool

    千次下载 热门讨论 2016-01-29 11:27:03
    HttpMockServerTool,经过简单配置可模拟HTTP/HTTPS服务器接口。
  • C++socket网络编程大全实战http服务器(支持php)视频培训教程概况:本课程会同时演示在linux和windows中的编程,课程中的线程和正则表达式都使用c++提供库。本课程包含了socket网络编程常用的所有特性,包括tcp、udp...
  • 什么是http服务器

    万次阅读 多人点赞 2019-02-25 10:13:43
    本篇文章旨在从服务器后台开发的角度剖析一个简单的http服务器的运行原理. 我们知道浏览器是http(s)的客户端,目的是连接远程的http服务器,然后服务器返回浏览器数据.浏览器接收数据解析数据之后展现出来.我们看到的...

    本篇文章旨在从服务器后台开发的角度剖析一个简单的http服务器的运行原理.

    我们知道浏览器是http(s)的客户端,目的是连接远程的http服务器,然后服务器返回浏览器数据.浏览器接收数据解析数据之后展现出来.我们看到的外在表现就是,浏览器访问一个url,然后就得到相应的web页面.

    同样我们知道,浏览器与http服务器是通过http协议,传输层是tcp协议,因为他是有连接,可靠的协议.关于http协议简单的介绍一下:


    一个标准的HTTP请求由以下几个部分组成

    <request-line>
    <headers>
    <CRLF>
    [<request-body><CRLF>]

    在HTTP请求中,第一行是请求行(request-line),用来说明请求类型、要访问的资源(URL)以及使用的HTTP版本;
    紧接着是多行头部(headers)信息,用来说明服务器要使用的附加信息;
    头部信息之后是一个回车换行符(\r\n),用于标明头部信息的结束。
    以上是必须内容,根据需要可在头部信息结束之后增加主体数据(request-body);

    主体数据之后是一个回车换行符(\r\n),用于标明主体数据的结束。

    例如,我们可以在IE浏览器上输入下面的网址:

    http://localhost:8000/hello/index.html

    HTTP请求的头部信息如下:

    GET /hello/index.html HTTP/1.1
    Accept: */*
    Accept-Language: zh-cn
    Accept-Encoding: gzip, deflate
    Host: localhost:8000
    Connection: Keep-Alive
    Cookie: JSESSIONID=BBBA54D519F7A320A54211F0107F5EA6

    收到请求数据之后,服务器解析,毕竟是明文字符,这个简单.然后服务器就知道了客户端的要求--获取目录hello/index.html文件.服务器读取文件内容发送给浏览器就好了.

    后来随着业务逻辑越来越复杂,单单获取某个html文件功能早已不能满足需求,个性化需求呼之欲出.比如在线问卷调查表,他究竟是怎么把我们填写的数据传递给服务器的呢?

    你可能会说那不是一样,客户端发送什么内容,服务器就接收什么内容.可是你想过没有,每个网站的需求是不一样的,本来服务器接收到浏览器的请求数据已经是够复杂的了,还让服务器来解析数据并响应不同的数据处理,这不太现实.

    一般的,服务器最好只接收数据,如果让服务器也处理数据逻辑,势必会让服务器变得很复杂,稳定性也得不到保证.

    另外一个角度是为了让程序复用,提高生产效率.也就是说,如果不关注业务逻辑,只注重接收数据,那么服务器程序可以给任何一个开发者使用.换句话说,我们不用从头开始写.直接使用现有的高性能的服务器就可以满足需求了.例如公司白领中午要吃饭,不可能跑回家自己去做饭吃,自己叫外卖就好了.

    但是现实问题仍然没有解决,通过什么方式去处理业务逻辑呢?

    你要给手机充电时,把插头插入插线板就能获取电了.插线板有接口,提供了电.

    同理服务器程序最好也提供接口,浏览器通过统一的接口给服务器,然后我们从服务器接口中获取我们想要的数据.获取数据之后我们可以把数据交给第三方程序来处理逻辑,这样就做到与服务器业务分离了,good iead.

    事实上,现在的http服务器就是这么做的,不过很复杂而已.下一篇开始为您介绍这些接口.

    附录:HTTP Request Header 请求头

     

    Header解释示例
    Accept指定客户端能够接收的内容类型Accept: text/plain, text/html
    Accept-Charset浏览器可以接受的字符编码集。Accept-Charset: iso-8859-5
    Accept-Encoding指定浏览器可以支持的web服务器返回内容压缩编码类型。Accept-Encoding: compress, gzip
    Accept-Language浏览器可接受的语言Accept-Language: en,zh
    Accept-Ranges可以请求网页实体的一个或者多个子范围字段Accept-Ranges: bytes
    AuthorizationHTTP授权的授权证书Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
    Cache-Control指定请求和响应遵循的缓存机制Cache-Control: no-cache
    Connection表示是否需要持久连接。(HTTP 1.1默认进行持久连接)Connection: close
    CookieHTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。Cookie: $Version=1; Skin=new;
    Content-Length请求的内容长度Content-Length: 348
    Content-Type请求的与实体对应的MIME信息Content-Type: application/x-www-form-urlencoded
    Date请求发送的日期和时间Date: Tue, 15 Nov 2010 08:12:31 GMT
    Expect请求的特定的服务器行为Expect: 100-continue
    From发出请求的用户的EmailFrom: user@email.com
    Host指定请求的服务器的域名和端口号Host: www.zcmhi.com
    If-Match只有请求内容与实体相匹配才有效If-Match: “737060cd8c284d8af7ad3082f209582d”
    If-Modified-Since如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT
    If-None-Match如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变If-None-Match: “737060cd8c284d8af7ad3082f209582d”
    If-Range如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为EtagIf-Range: “737060cd8c284d8af7ad3082f209582d”
    If-Unmodified-Since只在实体在指定时间之后未被修改才请求成功If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT
    Max-Forwards限制信息通过代理和网关传送的时间Max-Forwards: 10
    Pragma用来包含实现特定的指令Pragma: no-cache
    Proxy-Authorization连接到代理的授权证书Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
    Range只请求实体的一部分,指定范围Range: bytes=500-999
    Referer先前网页的地址,当前请求网页紧随其后,即来路Referer: http://www.zcmhi.com/archives/71.html
    TE客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息TE: trailers,deflate;q=0.5
    Upgrade向服务器指定某种传输协议以便服务器进行转换(如果支持)Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
    User-AgentUser-Agent的内容包含发出请求的用户信息User-Agent: Mozilla/5.0 (Linux; X11)
    Via通知中间网关或代理服务器地址,通信协议Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
    Warning关于消息实体的警告信息Warn: 199 Miscellaneous warning


    --------------------- 
    作者:Shonm 
    来源:CSDN 
    原文:https://blog.csdn.net/zxm342698145/article/details/79995039 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • Java 简单实现HTTP服务器

    万次阅读 2019-01-03 16:56:34
    HTTP服务器  解释: 个人理解,http服务器就是解析http请求信息,并解析信息;然后根据信息做后续事情。   Http请求格式与响应格式      核心代码   package com_2.Httpserver; import java.io....

    HTTP服务器

      解释: 个人理解,http服务器就是解析http请求信息,并解析信息;然后根据信息做后续事情。

     

    Http请求格式与响应格式

     

     

     核心代码

       

    package com_2.Httpserver;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    /**
     * @Description: //TODO  简单的HTTP服务器, 其实就是接受HTTP请求,并解析请求,
     * @Author: sunfch
     * @Date: 2019/1/3 16:35
     * @Param:
     * @Return:
     */
    public class HttpServer {
    
        public static void main(String[] args) {
            try {
    
                /*监听端口号,只要是8888就能接收到*/
                ServerSocket ss = new ServerSocket(8888);
    
                while (true) {
                    /*实例化客户端,固定套路,通过服务端接受的对象,生成相应的客户端实例*/
                    Socket socket = ss.accept();
                    /*获取客户端输入流,就是请求过来的基本信息:请求头,换行符,请求体*/
                    BufferedReader bd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    
                    /**
                     * 接受HTTP请求,并解析数据
                     */
                    String requestHeader;
                    int contentLength = 0;
                    while ((requestHeader = bd.readLine()) != null && !requestHeader.isEmpty()) {
                        System.out.println(requestHeader);
                        /**
                         * 获得GET参数
                         */
                        if (requestHeader.startsWith("GET")) {
                            int begin = requestHeader.indexOf("/?") + 2;
                            int end = requestHeader.indexOf("HTTP/");
                            String condition = requestHeader.substring(begin, end);
                            System.out.println("GET参数是:" + condition);
                        }
                        /**
                         * 获得POST参数
                         * 1.获取请求内容长度
                         */
                        if (requestHeader.startsWith("Content-Length")) {
                            int begin = requestHeader.indexOf("Content-Lengh:") + "Content-Length:".length();
                            String postParamterLength = requestHeader.substring(begin).trim();
                            contentLength = Integer.parseInt(postParamterLength);
                            System.out.println("POST参数长度是:" + Integer.parseInt(postParamterLength));
                        }
                    }
                    StringBuffer sb = new StringBuffer();
                    if (contentLength > 0) {
                        for (int i = 0; i < contentLength; i++) {
                            sb.append((char) bd.read());
                        }
                        System.out.println("POST参数是:" + sb.toString());
                    }
                    /*发送回执*/
                    PrintWriter pw = new PrintWriter(socket.getOutputStream());
    
                    pw.println("HTTP/1.1 200 OK");
                    pw.println("Content-type:text/html");
                    pw.println();
                    pw.println("<h1>successful</h1>");
    
                    pw.flush();
                    socket.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    输出信息: 

    GET /sun=sunfengchuan HTTP/1.1
    GET参数是:ET /sun=sunfengchuan 
    Host: localhost:8888
    Connection: keep-alive
    Cache-Control: max-age=0
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9
    Cookie: ticket=610090C008FE4A4B8B62BE9399230FDD
    GET /favicon.ico HTTP/1.1
    GET参数是:ET /favicon.ico 
    Host: localhost:8888
    Connection: keep-alive
    Pragma: no-cache
    Cache-Control: no-cache
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36
    Accept: image/webp,image/apng,image/*,*/*;q=0.8
    Referer: http://localhost:8888/sun=sunfengchuan
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9
    Cookie: ticket=610090C008FE4A4B8B62BE9399230FDD
    Disconnected from the target VM, address: '127.0.0.1:8888', transport: 'socket'
    

     

    展开全文
  • WEB/HTTP服务器搭建

    万次阅读 多人点赞 2019-01-19 21:29:25
    HTTP 对于软件都有服务和客户,有服务端和客户端 服务 就是在操作系统运行一个或者多个程序,并为客户端提供相应所需的服务 协议 就是计算机网络中进行数据交换而建立的规则、标准或约定的集合。只有遵守这个...

    HTTP

    对于软件都有服务和客户,有服务端和客户端

    服务

    就是在操作系统运行一个或者多个程序,并为客户端提供相应所需的服务

    协议

    就是计算机网络中进行数据交换而建立的规则、标准或约定的集合。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。

    1.WEB服务器

    web服务器一般指网站服务器,他是一个驻留于Internet的一个计算机程序,用于向浏览器提供文档,网站等信息,也可以在其中放置各种文档数据供世界下载,当然也可以放置文档供世界浏览。

    1.1 WWW

    环球信息网,又名“万维网”,其可分为Web客户端和Web服务器程序。可以让客户端(常用浏览器)访问浏览Web服务器上的页面。由许多互相链接的超文本组成,通过互联网互相访问。

    Internet提供的主要服务有万维网WWW)、文件传输FTP)、电子邮件(E-mail)、远程登录Telnet)、手机 (3GHZ) 等。

    1.2 Http

    (HyperText Transfer Protocal)超文本传输协议,是互联网上最广泛的一种网络协议,所有的www文件都必须遵守这个标准。

    它使得浏览器的传输访问更高效,使网络传输减少。

    1.3 网页、网页文件和网站

    网页是网站的基本信息单位,是组成WWW的基本文档。由文字、图片、动画、声音等多种媒体信息以及链接组成,用HTML编写,通过链接实现与其他网页或网站的关联和跳转。

    网页文件是用HTML(标准通用标记语言下的一个应用)编写的,在WWW上传输,能被浏览器识别显示的文本文件。其扩展名是.htm.html

    网站由众多不同内容的网页构成,网页的内容可体现网站的全部功能。通常把进入网站首先看到的网页称为首页或主页(homepage)

    1.4 apache

    是一种当今流行的linux Web服务器,起初由Illinois大学Urbana-Champaign的国家高级计算程序中心开发,后来Apache被开放源代码团体的成员不断地发展和加强。

    1.5网站架构lamp    

    lamp=Linux+apache+mysql+php\python\jsp\perl

    静态网页:html

    动态网页 : 和后台数据库实现一些交互  php jsp python perl …

    本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,该软件开发的项目在软件方面的投资成本较低,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案。

    访问标准:通过访问ip地址及端口号访问服务器               

    2.HTTP协议运行原理

    HTTP报文结构

    请求报文由请求行,请求头部,空行和请求数据组成

    如下图

    1).请求行

    请求行分为三个部分:请求方法、请求地址和协议版本

    请求方法

    请求地址

    URL:统一资源定位符,是一种自愿位置的抽象唯一识别方法。

    端口和路径有时可以省略(HTTP默认端口号是80)

    如下例:

    协议版本

    协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1

    2).请求头部

    请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔。

    请求头部的最后会有一个空行,表示请求头部结束,接下来为请求数据,这一行非常重要,必不可少。

    3).请求数据

    可选部分,比如GET请求就没有请求数据。

    下面是一个POST方法的请求报文:

    POST  /index.php HTTP/1.1    请求行

    Host: localhost

    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2  请求头

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8

    Accept-Language: zh-cn,zh;q=0.5

    Accept-Encoding: gzip, deflate

    Connection: keep-alive

    Referer: http://localhost/

    Content-Length:25

    Content-Type:application/x-www-form-urlencoded

      空行

    username=aa&password=1234  请求数据

    HTTP响应 

    代理服务器: S和C之间的访问实体        

    缓存服务器: 特殊的代理服务器

    网关服务器: 一个http/FTP网关服务器C---http -- 8080 (FTP<-->HTTP )-----S FTP

                           <源ip地址><源端口号> <目标ip地址><端口> 

    HTTP关键字段

    UA字段

    SERVER字段

    Referer字段

    HTTP重定向

    Session

    Session是可以存储针对于某一个用户的浏览器以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制。 通常大家认为,只要关闭浏览器,session就消失,其实这是错误的理解。对session来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保留。由于关闭浏览器不会导致session被删除,迫使服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间.

    (1)第一次访问某个web站点资源时,客户端提交没有带SessionID的请求(请求报文头没有Cookie头域信息)。  而web服务器会检查是否有SessionID过来,没有则创建SessionID,并根据web程序自身定义在请求哪个资源时添加属于当前会话的信息(也可为空),这个信息列表以SessionID作为标识。然后将SessionID返回给客户端(通过响应报文头的Set-Cookie头域)。 (2 )客户端再次访问同个web站点时,提交带有SessionID的请求(通过Cookie头域存储SessionID)。由服务端判断session是否失效,如果未失效,可查询属于当前会话的信息列表。如果失效,则创建新的session(产生新的SessionID),而原先的session(包含session带的信息列表)则丢失,无法访问。

    Cookie

    Cookie 保存SessionID的方式可以采用Cookie,这样在交互过程中浏览器可以自动的按照规则把这个SessionID发回给服务器。Cookie的命名方式类似于SessionID。有时Cookie被人为的禁止,所以出现了其他机制以便在Cookie被禁止时仍然能够把SessionID传递回服务器。这种技术叫做URL重写,就是把SessionID直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为http://www.wantsoft.com/index.asp;jsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 。 另一种是作为查询字符串附加在URL后面,表现形式为http://www.wantsoft.com/index?js ... 99zWpBng!-145788764 。

    软件安装

    [root@imoemoe ~]# yum install httpd                  安装http服务器

    [root@imoemoe ~]# systemctl stop firewalld       关闭防火墙

    [root@imoemoe ~]# setenforce 0                        关闭selinux防火墙

    [root@imoemoe ~]# mkdir /{xixi,haha}                创建文件夹

    [root@imoemoe ~]# mkdir /usr/local/hehe          创建虚拟目录文件夹

    [root@imoemoe ~]# mkdir /xixi/100                    创建用户名登陆的虚拟目录

    [root@imoemoe ~]# echo '嘻嘻' > /xiaopang/100/index.html

    [root@imoemoe ~]# echo ‘我是嘻嘻’ > /xiaopang/index.html

    [root@imoemoe ~]# echo ‘哈哈’ > /dapang/index.html

    [root@imoemoe ~]# echo '虚拟目录' > /usr/local/hehe/index.html

    vim /etc/httpd/conf.d/httpd.conf                        ——编写主配置文件

    ServerName 0.0.0.0:80 

    vim /etc/httpd/conf.d/vhosts.conf                      ——编写辅助配置文件

    <Directory /xixi>                                ——设置xixi目录

            AllowOverride none                  ——允许覆盖

            Require all granted                   ——设置访问目录权限

    </Directory>

    <Directory /haha>                             ——设置haha目录

            AllowOverride none

            Require all granted

    </Directory>

    <Directory /usr/local/hehe>               ——设置hehe目录

            AllowOverride none

            Require all granted

    </Directory>

    Listen 10000    ——监听10000端口

    <VirtualHost 192.168.10.100:80>   端口号必须写

            DocumentRoot /xixi/100           ——指定当前主机访问网站根目录

            ServerName 192.168.10.100   ——指定访问网站名称

    </VirtualHost>

    <VirtualHost 192.168.10.100:80>       

            DocumentRoot /xixi

            ServerName www.xixix.com                             ——基于域名寻址

            ErrorLog "/var/log/httpd/dummy-host2.example.com-error_log"                               ——错误日志

            CustomLog "/var/log/httpd/dummy-host2.example.com-access_log" common        ——访问日志

    </VirtualHost>

    <VirtualHost 192.168.10.100:80>

            DocumentRoot /haha

            ServerName www.haha.com

            Alias /hehe /usr/local/hehe

            ErrorLog "/var/log/httpd/dummy-host2.example.com-error_log"

            CustomLog "/var/log/httpd/dummy-host2.example.com-access_log" common

    </VirtualHost>

    <VirtualHost *>   ——如想表示所有主机则使用 * 号

    [root@imoemoe ~]# systemctl restart httpd

    [root@imoemoe ~]# vim /etc/hosts

       192.168.10.100  www.xixi.com

       192.168.10.100 www.haha.com

    [root@imoemoe ~]# curl http://192.168.10.100

    嘻嘻

    [root@imoemoe ~]# curl http://www.haha.com

    哈哈

    [root@imoemoe ~]# curl http://www.haha.com/hehe/

    虚拟目录

    [root@imoemoe ~]# curl http://www.xixi.com

    我是嘻嘻

    展开全文
  • c++编写一个简单的Http服务器

    万次阅读 2019-06-28 19:40:21
    5.实现简单http服务器 github头文件: tcp_pthread_server.hpp与tcp_socket.hpp # include "tcp_pthread_server.hpp" # include using namespace std ; void HttpProcess ( string & req , ...

    1.http协议格式

    请求:
    在这里插入图片描述

    • 首行:方法 + url + 版本号(/favicon.ico???)
    • Header:请求的属性,冒号分割的键值对,每组属性用 \n 分割,遇空行结束
    • body:空行后面都是body的内容,body可以为空,如果body有内容,Header会有一个属性content-length来标识body的长度

    响应:
    在这里插入图片描述

    • 首行: 版本号 + 状态码 + 状态码解释
    • Header:请求的属性,冒号分割的键值对,每组属性用 \n 分割,遇空行结束
    • body:空行后面都是body的内容,body可以为空,如果body有内容,Header会有一个属性content-length来标识body的长度, 如果服务器返回了一个html页面, 那么html页面内容就是在body中.

    2.GET 和 POST 的区别

    GET 往往把参数放到 query_string 中
    POST 把参数放在 body 中

    3.HTTP状态码

    在这里插入图片描述
    在这里插入图片描述

    4.常用Header

    在这里插入图片描述

    5.实现简单http服务器

    github头文件:tcp_pthread_server.hpp与tcp_socket.hpp

    #include"tcp_pthread_server.hpp"
    #include<string>
    using namespace std;
    
    void HttpProcess(string& req, string* resp)
    {
     string first_line = "HTTP/1.0 200 OK\n";
     string body = "<html><div><h1>hello world</h1></div></html\n";
    #if 0
     string body = "<html lang=\"zh-cn\">\
                    <!测试 test>\
                    <body bgcolor=\"White\">\
                    <div>\
                    <br/>\
                    <h1 align=\"center\">hehe</h1>\
                    <hr/>\
                    <br/>\
                    <p style = \"background-color:Red\">Hello World</p>\
                    <hr/>\
                    <p style = \"front-family:arial;color:yellow;front-size:20px;\">HAHA.</p>\
                    <a href=\"http://ww.w3school.com.cn\">w3school</a>\
                    </div>\
                    <img src=\"test.jpg\" width=\"104\" height=\"142\" />\
                    </body>\
                    </html>\n";
    #endif
     string header = "Content-Type: text/html\ncharset: gbk\nContent-Length:"
                +to_string(body.size())+"\n\n";
     *resp = first_line + header + body;
     //service firewalld stop 关闭防火墙 #centos 7
     //service firewalld status
    }
    int main()
    {
      TcpPthreadServer server("0.0.0.0",9090);
      server.Start(HttpProcess);
      return 0;
    }
    

    编译, 启动服务. 在浏览器中输入 http://[ip]:[port], 就能看到显示的结果 “Hello World”
    在这里插入图片描述

    展开全文
  • 二、修改服务器访问端口 Apache2的默认访问端口为80,可修改为其他端口(当端口被占用时需要更改其访问端口) 进入apache2的安装目录 /etc/apache2/,修改ports.conf文件 $ cd /etc/apache2/ $ sudo chmod 775 ports....
  • Web服务器、HTTP服务器及应用服务器有何区别?Apache、Nginx、IIS、Tomcat、JBoss、Weblogic、WebSphere 都各属于哪种服务器? Web服务器是指驻留在Internet上的计算机程序,它的基本功能是提供Web信息浏览服务。...
  • c语言编写http服务器

    千次阅读 2018-09-27 10:26:24
    一直想弄一下http服务器,一直没有深入的去看http协议。 昨天研究了一天,查看源码和优化,终于实现了。也稍微的理解了一下http协议。 身为一个嵌入式工程师,需要了解http协议吗?显然是必要的, 例如:你有一个...
  • http服务器源码--java版(适合学习)

    千次下载 热门讨论 2013-10-05 17:31:12
    java写的http服务器源码,有注释,适合初学者学习。可以直接使用。
  • 最近,我特别想组NAS文件服务器,玩着玩着就找到了一个用Android旧手机搭建web服务器的方法。我本身也用着某云搭建自己的个人网站,找到这个方法,这不就省下了开支。 闲话短说,我用的是一台红米手机,应该是七八年...
  • 一 常见的WEB服务器和应用服务器  在UNIX和LINUX平台下使用最广泛的免费web服务器是W3C、NCSA和APACHE服务器,而Windows平台NT/2000/2003使用IIS的WEB服务器。  在选择使用WEB服务器应考虑的本身特性因素有...
  • Qt Http服务器简单变成https服务器

    千次阅读 2018-05-11 18:05:10
    一开始qt http服务器还是好简单,因为就是TCP连接上面一个简单协议。后来听说发布小程序必须用到https+域名,估计好多刚开始往小程序里跑的小伙子都哭晕在测所。不过我不负责写小程序,我负责搞用qt 写个http的...
  • 使用C#开发HTTP服务器之支持HTTPS

    万次阅读 2017-03-15 20:21:19
    本文是“使用C#开发HTTP服务器”系列的第六篇文章,在这个系列文章中我们实现了一个基础的Web服务器,它支持从本地读取静态HTML页面,支持GET和POST 两种请求方式。该项目托管在我的 Github 上,项目地址为:...
  • 使用C#开发HTTP服务器系列之更简单的实现方式

    万次阅读 热门讨论 2016-07-02 15:56:45
    到目前为止,我已经发布了3篇HTTP服务器开发的系列文章。对我个人而言,我非常享受这个从无到有的过程,或许我现在写的这个Web服务器有各种不完美的因素,可是当有一天我需要一个轻量级的服务器的时候,我在无形中...
  • 在Windows 7/10或Ubuntu上可以通过python2.x或python3.x来快速搭建一个简单的HTTP服务器。 如果python为2.x,则可执行:$ python -m SimpleHTTPServer 或 $ python2 -m SimpleHTTPServer 如果python为3.x,则可...
  • 说说如何搭建 HTTP 服务器

    千次阅读 2018-06-10 11:42:46
    这里使用 Apache HTTP Server 来搭建 HTTP 服务器。 1、在搜索引擎中输入 “Apache HTTP Server 下载” 关键字,下载 Apache HTTP Server 的安装包,形如:httpd-2.2.25-win32-x86-no_ssl.msi 2、双击运行安装程序...
  • 在很多情况下,需要在本地开启http服务器来测试。所以就需要一个简单的省事好用的http服务器。以前的时候,都是使用php的本地环境,但是,自从学了nodejs,发现了http-server好东西。不用配置直接在当前文件夹内打开...
  • 深入学习用 Go 编写 HTTP 服务器

    千次阅读 多人点赞 2020-01-28 12:30:00
    Go是一门通用的编程语言,想要学习 Go 语言的 Web 开发,就必须知道如何用 Go 启动一个 HTTP 服务器用于接收和响应来自客户端的 HTTP 请求。用 Go实现一个http server非常容易,Go 语言标准库net/http自带了一系列...
  • ubuntu搭建一个简单的http服务器

    万次阅读 2019-08-14 21:32:38
    使用ubuntu搭建一个简单的http服务器 安装apache2 1.sudo apt-get update 2.sudo apt-get install apache2 安装成功后,再/etc/apache2目录可见其配置文件,本文搭建简单HTTP服务器,此处不做介绍。 apache2安装...
  • Java 实现简单的Http服务器

    千次阅读 2018-02-02 11:11:25
    Java 实现简单的Http服务器  首先需要说明的是,这个HTTP服务器真的超级简单,简单到只有一个Java类,它只能返回一个特定的HTML文本。写这个HTTP服务器程序是为了探究Web服务器到底是如何提供HTTP服务的。  要...
  • Linux实现一个简单的HTTP服务器

    千次阅读 2018-06-24 10:51:09
    代码实现 : Makefile : .PHONY:all clean ...http_server:http_server.c ...
  • 用nodejs搭建简易的HTTP服务器

    万次阅读 2017-02-27 01:35:32
    用nodejs搭建简易的HTTP服务器声明:本文主要参考 Node入门 http://www.nodebeginner.org/index-zh-cn.html,向此电子书的作者Manuel Kiessling及译者goddyzhao & GrayZhang & MondayChen表示衷心感谢。目的 (1)...
  • 区分Web服务器、HTTP服务器、应用程序服务器

    万次阅读 多人点赞 2018-04-04 16:58:08
    进程听到和看到web服务器、HTTP服务器、应用程序服务器,但一直不知道它们有什么区别,迷惑了好久,今天查看的很多博客,终于算是梳理通了,下面我就来总结一下它们的区别,顺别了解一些服务器。 首先我们要知道web...
  • 使用Python开启简单的本地HTTP服务器

    千次阅读 2019-03-20 11:42:46
    在电脑上建立简单的HTTP服务器,局域网内共享某个文件夹或文件 开启流程: 前往Python官网下载对应系统的Python版本,以Windows系统为例 最好选用Stable Releases当中的最新Python版本,如3.7.2版本,三种...
  • 需要快速搭建一个简易的HTTP服务器进行文件的分享与下载。主要有以下两种方法: 1. 使用python 来实现 import http.server import socketserver PORT = 8002 Handler = http.server.SimpleHTTPRequestHandler ...
  • 用Python一键搭建Http服务器

    千次阅读 2017-05-22 21:15:22
    用Python一键搭建Http服务器今天好友问我怎么从阿里云服务器上把文件下载下来。我一听之下觉得办法很多啊,随意搭个服务器,然后把文件一丢就可以下载了;弄个FTP也行;直接用远程桌面往下拖也可以。考虑到便捷性,...
  • HFS搭建HTTP服务器

    万次阅读 2018-06-12 17:39:34
    本文介绍用HTTP服务器工具软件HFS建立一个临时的HTTP文件服务,使能通过手机浏览器等访问下载计算机中的指定文件。 1. 简介 HFS ~Http File Server,它是一种上传文件的软件。 专为个人用户所设计的 HTTP 档案...
  • Android 如何在Android项目中搭建HTTP服务器 前言 顾客在无人售货机前购买商品,需要把选购的商品信息上传给Android应用并显示在屏幕上,通信协议为Http协议,无人售货机将作为客户端,Android应用作为服务端...
  • 【项目】简易http服务器流程图分析

    千次阅读 2017-04-23 18:31:36
    看这篇博客前先看-http协议基础知识总结:http://blog.csdn.net/llzk_/article/details/70513739http服务器是基于C/S模式(客户端/服务器),应用层使用http协议,传输层使用TCP协议。基本框架如下: 本http服务器...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,750,694
精华内容 1,100,277
关键字:

http服务器