接收HTTP标头

Roc*_*etR 3 c++ webserver parsing http httprequest

在教育方面,我正在用C++编写HTTP服务器.收到请求时,如何知道客户端何时完成发送标头?是否有义务一次性发送所有标题?如果客户发送G,然后5秒后E,然后T......?我应该等待超时并且如果花费太长时间就关闭连接吗?我是否应该在获得第一个字节后立即开始解析以了解请求是否无效?

我知道有很多这样的库,我只是重新发明轮子以更好地理解Web在不同层的工作方式.我无法找到他们如何处理我的问题.

Fem*_*ref 5

根据HTTP 1.1 RFC(4.1):

    generic-message = start-line
                      *(message-header CRLF)
                      CRLF
                      [ message-body ]
    start-line      = Request-Line | Status-Line
Run Code Online (Sandbox Code Playgroud)

邮件头后面有一个额外的CRLF.所以一旦遇到序列CRLF - > CRLF,身体就会启动.

Concering timeout:您可以在接收到字符后开始解析(等待CRLF,因此您知道标头已完成),一旦请求超过5秒左右,请发回408请求超时.