HTTP服务器的设计与思考

xiaoxiao2021-02-28  8

  1、服务器设计前的思考  

    HTTP 和 HTTPS 都是应用层的一种协议,他们的底层实际上是通过 TCP 进行传输的。因此,要实现一个 Web 框架,就必须要对浏览器访问 Web 服务器的过程做一个了解。

    服务端已经运行起了服务,因此在服务器启动后便开始通过 Socket 监听端口上的请求。这时,客户端浏览器想要访问服务器资源时,就会发送相应的 HTTP 或者 HTTPS 请求。当服务端收到请求后,就会处理这部分请求,返回客户端所需的资源。

     处理与客户端建立连接使用 accept() 方法;真正对于服务器内部的相关逻辑,全部由基类 ServerBase 来实现;先确定好基类的基本设计,在ServerBase模板类中,我们只需预留一个接口start()用于启动服务器给外部调用。

2、服务器的设计

     实现一个 Web 服务器,最重要的就是对来自客户端的请求信息进行解析,为此,我们需要在命名空间中定义一个 Request 结构体

包括:http版本,端口号,请求方法,请求路径(采用正则表达式进行匹配)

3、实现基类

首先来实现 start()。实现 start() 时,我们要将考虑下面几个问题:

默认资源应该在最后被添加到 all_resources 中,当我们处理请求路径时,应该先处理好所有的非特殊路径,当找不到匹配请求路径时,再使用默认的请求资源。当指定启用多个线程时,线程启动后需要让线程各自等待,直到整个请求应答过程结束

转载请注明原文地址: https://www.6miu.com/read-691870.html

最新回复(0)