windows - 查找应用程序使用的 TCP 端口

标签 windows api process tcp port

好吧,我正在扩展我公司的 flexlm 供应商守护程序,以便向客户端应用程序显示更多信息。

我需要能够在客户端连接之前找出 lmgrd 正在监听的端口。 API 文档似乎相当贫乏,我相信他们将大部分代码保存在编译后的形式中,所以我不能只查看它们的源代码。

是否可以调用 Windows API 的强大功能来找出特定进程正在使用的端口?如果 Sysinternals 的 Process Explorer 可以做到,我应该可以,对吧?什么是一些示例代码?

它需要支持 Windows XP 及更高版本,因为我们的许多客户尚未升级。

我应该注意到,事实证明 FLEX 支持从许可证文件中提取端口。我手边没有代码,但我知道这不是找出您的供应商守护程序/lmgrd 正在运行哪些端口的最佳方法。

最佳答案

GetTcpTable2——见下文

GetTcpTable2 function

GetTcpTable 函数检索 IPv4 TCP 连接表。

这将填充 MIB_TCPTABLE 结构。

typedef struct _MIB_TCPTABLE {
  DWORD      dwNumEntries;
  MIB_TCPROW table[ANY_SIZE];
} MIB_TCPTABLE, *PMIB_TCPTABLE;

现在是 MIB_TCPROW

typedef struct _MIB_TCPROW {
  DWORD dwState;
  DWORD dwLocalAddr;
  DWORD dwLocalPort;
  DWORD dwRemoteAddr;
  DWORD dwRemotePort;
} MIB_TCPROW, *PMIB_TCPROW;

重要:

您还需要使用 GetTcpTable2 来获取关联的相应 PID。

typedef struct _MIB_TCPROW2 {
  DWORD                        dwState;
  DWORD                        dwLocalAddr;
  DWORD                        dwLocalPort;
  DWORD                        dwRemoteAddr;
  DWORD                        dwRemotePort;
  DWORD                        dwOwningPid;
  TCP_CONNECTION_OFFLOAD_STATE dwOffloadState;
} MIB_TCPROW2, *PMIB_TCPROW2;

dwOwningPid

关于windows - 查找应用程序使用的 TCP 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6499845/

相关文章:

c - 非阻塞输入 C

c# - 使用 C# 在本地注销 Windows 用户

c# - 使用 C# 获取应用程序打开的所有 TCP 连接

process - 从 xv6 中的进程关闭 qemu

c++ - Windows header 中是否有禁用 TCHAR 中性函数名称宏定义的设置?

.net - 从 .NET 到 APNs 的 SSL/TLS 握手 - 远程证书无效

javascript - CORS 问题 请求的资源上不存在 'access control allow origin header'

php - Dropbox API 限制

javascript - 如何解析每个周期有两个低潮/高潮的 worldtide.info JSON?

c++ - 是否可以使用c++获取与WinCE中指定进程关联的所有Dll的内存使用情况?