|
|
1
2
正如大卫指出的,关系应该保持开放一段时间。除非客户端这样做(或者如果keep-alive间隔过期),否则不应关闭连接。 更改为HTTP/1.0将不起作用,因为您是一个服务器,并且它是在请求中指定HTTP/1.1的客户机。当然,您可以使用HTTP/1.0作为版本发送一条错误消息,并希望客户端更改为1.0,但它似乎效率低下。 HTTP消息如下:
知道响应何时完成的唯一方法是搜索Content-Length头。只需在请求缓冲区中搜索“content-length:”并将所有内容提取到linefeed。(但在转换为int之前,请修剪找到的值)。 另一种选择是在 webserver 获取所有标题。只使用解析器,而不使用库中的任何内容,应该非常容易。 更新: 这里有一个更好的解析器: HttpParser.cs |
|
|
2
3
如果您请求HTTP/1.0而不是1.1,服务器应该在连接完成后立即关闭连接,因为它不需要为另一个请求保持连接打开。 除此之外,您确实需要在响应中解析Content-Length头以获得最佳值。 |
|
|
3
-1
使用阻塞IO和多线程可能是您的答案。明确地
这是用于文本数据,但是二进制处理类似。 |