0

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

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

4

1 回答 1

2

客户端应该发送一个content-length标头字段。有关更深入的讨论,请参阅RFC 2616 第 4.4 节消息长度

于 2013-11-06T07:17:58.970 回答