1

com.sun.net.httpserver.HttpServer 是否支持单连接管道?它似乎并行处理多个客户端,但单个连接的请求正在串行执行。

这是否准确,如果是,有没有办法解决这个问题?

4

2 回答 2

0

符合 HTTP 1.1 的 HTTP 服务器应该支持流水线。请注意,客户端也应该支持流水线。
根据httpserver

API 提供了 RFC 2616 (HTTP 1.1) 和 RFC 2818 (HTTP over TLS) 的部分实现。

似乎暗示com.sun.net.httpserver.HttpServer不完全支持HTTP1.1。
HttpURLConnection不支持流水线,所以我倾向于认为com.sun.net.httpserver.HttpServer也不支持流水线。
你说你做了一些测试。你是怎么测试这个的?

更新
从注释看来,流水线是受支持的。
如果,如您所说,您通过管道发送请求,则响应应根据请求的到达返回(与完成每个请求所需的时间无关,即有些请求比其他请求快)。

于 2011-01-19T21:11:39.740 回答
0

HTTP 流水线意味着非常简单的事情:客户端可以将下一个请求写入连接,而无需读取上一个响应。

任何http服务器都不支持流水线真的很难。它必须向前看,如果它发现超出当前请求的可用字节,它需要中止......但这很荒谬,没有人这样做。

这与服务器如何处理请求无关 - 串行或并行。并行做当然更难,也有一些问题需要解决。

于 2011-01-20T00:49:02.180 回答