zoukankan      html  css  js  c++  java
  • HTTP 请求的读取和分析

    主状态机的状态

    • 正在分析请求行 CHEACK_STATE_REQUESTLINE -> parse_requestline
    • 正在分析头部字段 CHECK_STATE_HEADER -> parse_headers

    从状态机的三种可能状态,即行的读取状态

    • 读取道一个完整的行 LINE_OK
    • 行出错 LINE_BAD
    • 数据尚且不完整 LINE_OPEN

    服务器HTTP 请求结果

    • NO_REQUEST 表示请求不完整,还需要继续读取客户数据
    • GET_REQUEST 表示获得了一个完整的客户请求
    • BAD_REQUEST 表示客户请求有语法错误
    • FORBIDDEN_REQUEST 表示客户对资源没有足够的访问权限
    • INTERNAL_ERROR 表示服务器内部错误
    • CLOSE_CONNECTION 表示客户端已经关闭连接了

    LINE_STATUS parse_line (char* buffer, int& checked_index, int& read_line)

    用于解析出一行的内容
    checked_index 指向 buffer 中当前正在分析的字节,read_index 指向 buffer 中客户数据的尾部的下一个字节, buffer 中 0 ~ checked_index 字节都分析完毕,第 checked_index ~ read_index - 1,需要逐个分析
    parse_line ->ok 的,才能开始分析请求行以及头部字段

    HTTP_CODE parse_requestline (char* temp, CHECK_STATE& checkstate)

    用于分析请求行

    HTTP_CODE parse_headers(char* temp)

    分析头部字段

    HTTP_CODE prase_content(char* buffer, int& checked_index, CHECK_STATE& checkstate, int& read_index, int& start_line)

    HTTP 请求的入口函数

  • 相关阅读:
    GCD
    hexo 部署 githubPage 部署不了的问题
    vim 常见操作
    linux 常见目录的作用
    cd 简化命令
    linux 系统运行级别
    APNIC IP 库
    linux 安装ssh
    linux
    Android知识点总结
  • 原文地址:https://www.cnblogs.com/wsl-hitsz/p/14584496.html
Copyright © 2011-2022 走看看