com.sun.net.httpserver.HttpServer是否支持流水线操作?

时间:2011-01-19 20:51:09

标签: java http pipelining com.sun.net.httpserver

com.sun.net.httpserver.HttpServer是否支持单连接流水线操作?它似乎并行处理多个客户端,但是单个连接的请求正在连续执行。

这是否准确?若然,有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

符合HTTP 1.1的HTTP服务器应支持流水线操作。请注意,客户端也应支持流水线操作 根据{{​​3}}

  

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

似乎暗示com.sun.net.httpserver.HttpServer并不完全支持HTTP1.1 HttpURLConnection不支持管道传输,因此我倾向于认为com.sun.net.httpserver.HttpServer也不支持管道传输。
你说你做了一些测试。你是怎么测试的?

<强>更新
从注释中可以看出支持流水线操作 如果你正如你所说的那样发送流水线请求,那么响应应该根据请求的到达而返回(与完成每个请求所需的时间无关,即某些请求比其他请求更快)。

答案 1 :(得分:0)

HTTP流水线操作意味着非常简单:客户端可以在不读取先前响应的情况下向连接写入下一个请求。

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

这与服务器处理请求的方式无关 - 串行或并行。并行执行当然更加困难,并且有一些问题必须解决。