gpt4 book ai didi

c# - 监控 .net 中的互联网使用情况

转载 作者:行者123 更新时间:2023-11-30 12:16:52 25 4
gpt4 key购买 nike

我想用 C# 编写一个方法来检查我的机器/服务器中的哪些应用程序在特定时间点正在使用 Internet 连接,如果可能的话,它们使用了多少带宽。谁能帮我抢先一步?

最佳答案

我决定写一个答案,因为评论太少了。

好吧,阅读 stackoverflow 上的其他问答并在互联网上四处寻找,我没有找到解决您问题的简单方法。

实际上,对于 .NET 进程来说非常简单,您只需要从 “.NET CLR Networking - Bytes Received/Bytes Sent” 性能计数器中检索信息,如 Q&A 所示

但总的来说,获取每个进程使用的带宽并不是一件容易的事。

例如“Microsoft 网络监视器” 嗅探器可以跟踪仅为 TCP 流量生成互联网数据包的进程,因为它可能将 IP 端口对映射到使用它们的进程(或类似的东西,TCP 是connected protocol 所以它更简单)。
无论如何,如果您想尝试一下,可以使用公开的 API(查看 this 博客条目以获得一些提示)。

但是,正如这些问答(LINK 1LINK 2)中所建议的那样,正确且可能是唯一的方法是编写一个 NDIS/TDI 驱动程序来拦截网络流量并将 .NET 可调用 API 公开给

问题是这样的驱动不能写成托管代码,所以你需要用C/C++来实现。
显然,如果您设法找到一个已经编写好的驱动程序/嗅探器公开了一个可调用的 API,您就可以使用它。
例如WinPCap有一个(和一些 .NET 包装器,如 SharpPCapPCap.Net ),但我不认为(不确定)它能够获取数据包的源进程信息。

关于c# - 监控 .net 中的互联网使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4583799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com