C / C ++ - 为PUT请求实现http协议

时间:2013-11-06 07:12:00

标签: c++ c sockets http tcp

我正在写一个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之前不要发送请求。

但是,如果内容也包含换行符,那么我怎么知道客户端是什么时候发送给我的呢?

1 个答案:

答案 0 :(得分:2)

客户端应发送content-length标头字段。有关更深入的讨论,请参阅RFC 2616 section 4.4 Message length