当前位置: 首页 > article >正文

HTTP服务器的工作逻辑

一、主要目的

    介绍HTTP服务器的工作逻辑。

 

二、主要内容

  (一)技术路线

    每个请求对应一个TCP连接。

    每个请求对应一个线程任务。

    用线程池执行每个任务。

    只探讨简单的TCP短连接返回HTML资源的情形。

 

  (二)HTTP服务器的核心逻辑

// 初始化各种资源

// 建立服务端TCP套接字,绑定端口,设置最大连接数

// 建立线程池

init();

 

// 进入循环,用变量控制循环的进行

while(运行为真){

      // 阻塞获取一个客户端的TCP套接字

 

      // 用客户端套接字创建一个线程任务

 

      // 把线程任务提交到线程池执行

}

 

// 后续处理

destoy();

 

 (三)线程任务的逻辑

// 建立TCP套接字的输入流,输出流

 

// 读取一行,获得HTTP请求行

 

// 循环读取每个HTTP请求头,直到空行

 

// 每个请求头根据":"分割,去除两端多余空白字符,加入到散列表Map中

 

// 判断是否为Get请求

if(是GET请求){

      // 获得请求资源路径,解码成原始的URL格式

 

      // 去除后面的请求参数(如果存在)

 

      // 根据项目目录的磁盘路径,连接资源路径

 

      // 用文件接口判断该资源是不是存在

      if(资源存在){

            // 设置Content-Length响应头的值是文件的字节数

 

            // 输出HTTP 200响应头部

 

            // 把项目下对应资源文件的所有字节接在头部后面输出到TCP套接字中

       } else {

           // 文件不存在,输出404响应 

 

          // 响应内容格式如下:

       " HTTP/1.1 404 Not Found\r\n

          Server: TT\r\n

          Content-Type: text/plain\r\n

          Content-Length: 10\r\n

          \r\n

          Not Found

       "

      }

} else {

    // 输出不支持方法的响应

 

    // 响应内容格式如下:

       " HTTP/1.1 405 Not Support\r\n

          Server: TT\r\n

          Content-Type: text/plain\r\n

          Content-Length: 11\r\n

          \r\n

          Not Support

       "

}

 

// 刷新输出流

 

// 关闭TCP套接字

socket.close();

 

 


http://www.kler.cn/a/591024.html

相关文章:

  • 力扣hot100_二分查找(1)_python版本
  • 小样本学习入门指南:以图像识别为例
  • 【数据结构之树】
  • PE(Processing Element,处理单元)在Vitis HLS中的应用与实现
  • 深入理解 Linux 的 top 命令:实时监控系统性能
  • Python绝美樱花树
  • 结合基于标签置信度的特征选择方法用于部分多标签学习-简介版
  • 第18章-综合以上功能 基于stm32的智能小车(远程控制、避障、循迹) 基于stm32f103c8t6_HAL库_CubeMX_超详细,包含代码讲解和原理图
  • Matlab 汽车电子驻车系统仿真分析
  • Java算法之解题套路
  • 超图神经网络的详细解析与python示例
  • 国产编辑器EverEdit - 模式的原理与作用
  • HP LoadRunner 12.02全面性能测试工具的功能与使用指南
  • 【大模型】Token计算方式与DeepSeek输出速率测试
  • 本周安全速报(2025.3.11~3.17)
  • 【深度学习与大模型基础】第6章-对角矩阵,对称矩阵,正交矩阵
  • Redis--渐进式遍历
  • 清晰易懂的Python安装与配置教程
  • 磁盘分析“透视镜”,轻松管理存储空间!
  • Power Apps 技术分享:使用控件的相对布局