【问题标题】:Windows Process and Ip Address that it's connected to它连接到的 Windows 进程和 IP 地址
【发布时间】:2009-09-12 09:37:47
【问题描述】:

我正在尝试获取进程在 c# 中连接的 IP 地址。有没有简单的方法可以做到这一点?

【问题讨论】:

  • 我不确定您要什么。进程没有连接,套接字是由进程创建的。你可以说得更详细点吗?您是否正在寻找带有 -b 参数的 netstat 工具之类的东西?

标签: c# .net windows network-programming


【解决方案1】:

有两种方法可以实现:

  1. 使用从 iphlpapi.dll 导出的未记录的 InternalGetTcpTableWithOwnerModule / InternalGetUdpTableWithOwnerModule / InternalGetTcp6TableWithOwnerModule / InternalGetUdp6TableWithOwnerModule API。
  2. 运行netstat -b 并解析输出。

无论哪种方式,您都需要管理员权限,并且两种方式都必然会因不同的 Windows 版本而中断。使用已记录的 API 创建 Windows 驱动程序当然是可行的,但这需要大量工作。

更新:

实际上也有一个记录在案的 API - GetExtendedTcpTableGetExtendedUdpTable。还有一个 article 提供了一个如何从 C# 调用它的示例。

【讨论】:

  • 这很好用,虽然所讨论的过程是使命召唤 4,即使我在服务器中玩游戏时它也不会出现在列表中,这有点令人困惑。
  • 跟进一下,netstat -b 里都没有出来
  • 你知道使命召唤使用哪种协议进行网络连接吗? netstat -a -b 显示了吗?
  • 嗯,它以 UDP 的形式返回:0.0.0.0:49404,但初始地址是 78.111.229.123:32000,我相信这是 tcp,但我从未看到该地址。
  • 刚刚使用了数据包嗅探器,它会发送到 78.111.229.123:32000 UDP
猜你喜欢
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-03
  • 2011-06-06
相关资源
最近更新 更多