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 请求的入口函数

HTTP 请求的读取和分析

原文链接: https://www.cnblogs.com/wsl-hitsz/p/14584496.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    HTTP 请求的读取和分析

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/397322

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月10日 上午9:29
下一篇 2023年4月10日 上午9:29

相关推荐