我正在寻找TCP连接的“延迟”字段。我注意到Windows资源监视器具有此字段,我想知道是否可以找到它。最好不使用WMI。

如果不确定我要说的是哪个字段,请打开“任务管理器”,转到“性能”选项卡,然后单击“资源监视器”按钮。

打开资源监视器后,展开“TCP连接”区域,您将看到一个“延迟”字段。无论如何,是否可以通过编程方式访问此内容?

谢谢!

最佳答案

我假设资源监视器查看给定TCP表条目的往返时间(RTT)。这样可以合理指示整个网络的延迟。

您可以使用一个API来访问这些统计信息,即GetPerTcpConnectionEStats。这使您可以检索有关特定TCP连接的大量统计信息。

基本上,您首先使用GetTcpTable获得tcp连接的列表,然后找到所需的行,并将其传递给GetPerTcpConnectionEStats,并将TcpConnectionEstatsPath作为EstatsType参数,以便您应该获得TCP_ESTATS_PATH_ROD_v0结构。

该结构中包含许多RTT统计信息,其中最有用的可能是SumRtt和CountRtt成员,您可以使用它们来获取该特定TCP表行的平均RTT计算。

请注意,这些功能仅在Vista和更高版本中存在,但是资源监视器也是如此,因此我认为这是可以的。

关于c# - 如何获得打开TCP连接的进程的 "Latency"?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3055605/

10-13 06:09