我正在开发一个 HTTP 客户端,理想情况下它应该在需要时通过管道传输请求。此外,请求将在特定的网络接口上发送(客户端是多宿主的)。
使用异步套接字,为了发出请求,我使用以下代码:
Uri url = new Uri(reqUrl);
ServicePoint sp = ServicePointManager.FindServicePoint(url);
sp.BindIPEndPointDelegate = new BindIPEndPoint(localBind);
pseg.req = (HttpWebRequest)HttpWebRequest.Create(url);
pseg.req.AddRange("bytes", psegStart, psegStart + psegLength - 1);
pseg.req.KeepAlive = true;
pseg.req.Pipelined = true;
对于使用此代码发出的每个请求,都会打开到服务器的单独连接并并行接收分段。这没关系,但是,这不是我想要的行为。我希望请求被流水线化,但回复按顺序到达。如果我使用锁定或将连接限制设置为 1,则在完全接收到段 #1 之后才会发送对段 #2 的请求。
有什么方法可以实现我想要的并且仍然使用 HttpWebRequest/Response-classes?还是我必须下降到套接字?