我正在编写一个 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 之前不要发送请求。
但是如果内容也有换行符怎么办,那么我怎么知道客户端何时 - 真的 - 完成向我发送内容?