有人能告诉我有关内容长度或传输编码的信息吗:“Chunked”是Http请求的必备条件?我用C++编写了一个HTTP服务器。p>
http响应可以使用close套接字来知道消息体的长度。但是你的请求呢
我已经检查了关于http 1.1的RFC2616,但是我还不太清楚
我的问题是,如果发送的http请求没有“Content Length”或“Chunked Transfer Encoding”,我如何使用“WSARecv”来知道消息体的长度,如果我使用WSARecv并获得所有标题和网络流以“\r\n\r\n”结尾,我无法获得消息体的长度。如果我再次交付WSARecv,它可能会永远等待,因为没有更多的数据。如果我没有再次发送“WSARecv”,那么如果有,我可能无法获得消息正文
或者“内容长度”和“分块传输编码”是http请求的必备条件?客户端应该设置其中一个来告诉服务器消息的长度
如果未指定
Transfer-Encoding
或Content-Length
,则请求(或响应)隐含为可变长度的请求/响应,向正文结尾发送信号的唯一方法是关闭连接(并反过来检测接收器中的关闭/eof)这意味着这种请求/响应也是隐式的
Connection: close
如果要实现HTTP1.1,那么必须支持所有三种传输方法
当我编写HTTP服务器时,我从“连接流”的概念中抽象出“请求流”的概念。“请求流”是多态的,支持读取“EOF”的概念。没有理由你不能在上面有一个“读块”的方法。在非分块请求的情况下,这可以简单地读取到EOF
这使我能够在同一个连接上同时执行多个请求(但要确保响应以正确的顺序返回,还需要一些技巧!)
RFC2616已过时
答案是https://greenbytes.de/tech/webdav/rfc7230.html#header.content-length
相关问题 更多 >
编程相关推荐