C# 如何从某个进程获取已打开套接字的列表?

C# 如何从某个进程获取已打开套接字的列表?,c#,windows,winapi,C#,Windows,Winapi,Windows资源监视器有一个很好的网络过滤器,可以很容易地获取某些进程(TCP连接、端口侦听等)的网络统计信息。我尝试了System.Diagnostics,但所有示例都是关于CPU和内存使用的。我找到了这个项目,但它看起来又脏又不安全。我唯一需要的是在我的c#项目中获得资源监视器功能,以便执行以下操作 var process = new Process("ProcessName"); var sockets = process.getSockets(); 在没有字节移位和指针的情况下,是否

Windows资源监视器有一个很好的网络过滤器,可以很容易地获取某些进程(TCP连接、端口侦听等)的网络统计信息。我尝试了System.Diagnostics,但所有示例都是关于CPU和内存使用的。我找到了这个项目,但它看起来又脏又不安全。我唯一需要的是在我的c#项目中获得资源监视器功能,以便执行以下操作

var process = new Process("ProcessName");
var sockets = process.getSockets();

在没有字节移位和指针的情况下,是否有任何安全合法的解决方案?

从命令行,
netstat-a-n-o
将获取此信息,包括打开或连接的每个套接字的进程id。带有-b选项的管理员权限甚至可以为您获取EXE名称。所以,如果情况变得更糟,您可以生成一个进程来运行netstat以获取此信息

从编程的角度来看,获取此信息的Win32 API包括和。您可以从iphlapi.dll进行p/invoke,从.net代码调用这些函数。有关更多信息,请参阅


您需要编写额外的代码来将代码引用的“进程名称”字符串映射到进程id号。(或相反)。

从命令行,
netstat-a-n-o
将获取此信息,包括打开或连接的每个套接字的进程id。带有-b选项的管理员权限甚至可以为您获取EXE名称。所以,如果情况变得更糟,您可以生成一个进程来运行netstat以获取此信息

从编程的角度来看,获取此信息的Win32 API包括和。您可以从iphlapi.dll进行p/invoke,从.net代码调用这些函数。有关更多信息,请参阅


您需要编写额外的代码来将代码引用的“进程名称”字符串映射到进程id号。(或相反)。

加注口编号。填料。是的。填料。填料。不,不。填料。填料。是的。填料。填料。这个答案是否解释了与OP已知的不同之处?这个答案是否解释了与OP已知的不同之处?