【问题标题】:Multiple simultaneous HTTP requests using .NET networking libraries使用 .NET 网络库的多个并发 HTTP 请求
【发布时间】:2012-04-29 06:06:49
【问题描述】:

我在专用 LAN 网段中有许多设备(IP 摄像机)连接到 PC。设备支持使用 HTTP 协议的单个 JPEG 帧传输。 我需要尽可能同时向所有设备发送 HTTP 请求。取回图像可能需要不同的时间,这没有区别。现代中级 CPU 上的第一个和最后一个请求之间的几毫秒会很好。 (我知道,我使用的是非实时系统)。

设备的峰值数据传输速率约为 50 Mbps,PC 连接到 LAN 段为 1000Mbps。设备数量约为十个。 HTTP 请求的典型大小约为 150 字节,响应为 40..200 KB。

现在我使用WebClient 类的DownloadDataAsync 方法,每个设备都有一个实例。但是有没有更有效的方法?

【问题讨论】:

  • 效率更高是什么意思? DownloadDataAsync 不能满足您的需求吗?
  • 例如,使用HttpWebRequest 花费更少的时间(大约10%)来完成整个请求-响应。此外,某些WebClient 行为取决于 Internet Explorer 设置。但最重要的是多个请求之间的最小延迟。

标签: c# .net http networking asynchronous


【解决方案1】:

您自己给出了答案:HttpWebRequest 稍微快一些,因为它的开销较低。不过,要快于这一步将很难实现。

编辑:当然,您可以使用原始套接字来驱动 HTTP 协议。不过,这将是很多工作。

【讨论】:

  • 感谢有关原始套接字的建议,我将尝试使用 Socket 类和 BeginConnect/BeginSend 异步方法。
【解决方案2】:

取决于摄像头的工作方式和网络布局...

您可以使用多播套接字: article 1 article 2

哪个效率最高..

如果您的 LAN 尺寸较小(大致仅由摄像头和控制器组成) 您可以使用广播,但这与多播相比收益很少(只有一些路由器处理时间)

【讨论】:

  • 由于某些原因,我现在限制使用 HTTP 协议。相机支持 UDP 协议,但存在一些问题(不确定多播)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多