【问题标题】:C/C++ - implementing http protocol for PUT requestC/C++ - 为 PUT 请求实现 http 协议
【发布时间】:2013-11-17 08:06:50
【问题描述】:

我正在编写一个 http 服务器,我只是对如何实现 PUT 请求有疑问。

我一次读取一个字节的客户端套接字,直到我到达一个 CRLF "\r\n" 新行,在那里我将该行发送到解析器以进行标记。当我连续得到两个换行符时,我会发送一个响应(因为它是象征请求完成的 http 标准)。

这对于实现 GET/HEAD/DELETE 来说很好。但现在我看到 PUT 的内容有双换行符。

PUT /index.html HTTP/1.0
Headers: stuff             <--- not the real CRLF 1
                           <--- not the real CRLF 2
html content goes here     <--- CRLF 1
                           <--- CRLF 2 ... done, send response

这很容易解释。如果我解析的第一行是 PUT,我会说好吧,在我们得到第二个 CRLF1+2 之前不要发送请求。

但是如果内容也有换行符怎么办,那我怎么知道客户端何时 - 真的 - 完成向我发送内容?

【问题讨论】:

    标签: c++ c sockets http tcp


    【解决方案1】:

    客户端应该发送一个content-length 头域。如需更深入的讨论,请参阅RFC 2616 section 4.4 Message length

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 2011-11-02
      • 1970-01-01
      • 2015-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-19
      相关资源
      最近更新 更多