【问题标题】:how to get list of opened sockets from some process?如何从某个进程中获取打开的套接字列表?
【发布时间】:2023-03-11 23:20:01
【问题描述】:

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

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

没有字节移位和指针有没有安全合法的解决方案?

【问题讨论】:

  • 编号 填充物。填料。填充物。
  • 是的。 填充物。填料。填充物。

标签: c# windows winapi


【解决方案1】:

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

以编程方式,将为您获取此信息的 Win32 API 包括 GetTcpTable2GetExtendedUdpTable 。您可以从 iphlpapi.dll p/invoke 以从 .net 代码调用这些函数。请参阅IP helper reference 了解更多信息。

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

【讨论】:

  • 这个答案是否解释了与 OP 已知的 this 不同的东西?
猜你喜欢
  • 2010-10-24
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
  • 1970-01-01
  • 2013-10-19
  • 2012-02-19
  • 1970-01-01
相关资源
最近更新 更多