Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在.net中监视internet使用情况_C#_.net - Fatal编程技术网

C# 在.net中监视internet使用情况

C# 在.net中监视internet使用情况,c#,.net,C#,.net,我想用C#编写一个方法来检查我的机器/服务器中的哪些应用程序在特定时间点使用internet连接,如果可能的话,检查它们使用了多少带宽。谁能帮我在这方面领先一步吗?我决定写一个答案,因为评论太少了 嗯,阅读stackoverflow的其他问答,在互联网上四处寻找,我没有找到一个简单的解决方案 实际上,由于.NET进程非常简单,您只需要从“.NET CLR Networking-Bytes Received/Bytes Sent”性能计数器中检索信息,如下所示 但一般来说,获得每个进程使用的带宽并

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

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

嗯,阅读stackoverflow的其他问答,在互联网上四处寻找,我没有找到一个简单的解决方案

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

但一般来说,获得每个进程使用的带宽并不是一件容易的工作

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

然而,正如这些问答(,)中所建议的,正确的,可能是唯一的方法是编写NDIS/TDI驱动程序,该驱动程序可以拦截网络流量并向其公开.NET可调用API

问题是这样的驱动程序不能用托管代码编写,因此您需要用C/C++实现它。
显然,如果您设法找到一个已编写的驱动程序/嗅探器来公开一个可调用的API,那么您可以使用它。

例如,它有一个(和一些.NET包装程序,如或),但我不认为(不确定)它能够获取数据包的源进程信息。

正如DigeMail所指出的,在Vista之前的Windows中,您只能编写自己的驱动程序或使用第三方驱动程序。在Vista、2008和Windows 7中,您可以使用API(MSDN页面上有一个使用API的大型示例)。资源监视器依赖于此API以及较旧的
GetTcpTable
/
gettcrow
API,用于扩展网络统计。

我发现进程监视器是一个非常有用的工具,它满足了我的目的,因此我不必编写任何代码,尽管我还没有检查它是否提供了任何API,我可以在我的应用程序中使用它来获取我需要的一些信息


感谢大家帮助我。

这可能会有所帮助-->另外,请看一下此问答:感谢@dig提供的见解。我认为这将是一个有益的开端。你可以把它转换成一个答案,这样我就可以把它标记为一个。我不值得任何分数,因为我刚刚链接了另一个问答。你应该想一想把那个问答投得更高,如果你认为它和这个相等,你应该结束你的问题:-)是的,我已经把这个问题投了更高的票..!!:-)这里只有一个问题。您提供的链接显示了我们如何检查互联网的总体使用情况。除此之外,我还想在我的机器上找到当前正在运行的使用互联网的应用程序,如果可能的话,还想知道每个应用程序正在使用多少带宽。这可能吗?