我正在写一个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之前不要发送请求。
但是,如果内容也包含换行符,那么我怎么知道客户端是什么时候发送给我的呢?