如何检测Windows中正在侦听tcp / ip端口的程序?

时间:2014-04-21 19:37:55

标签: sockets tcp vb6 ip port

我有一个我继承的应用程序,它在端口7001上侦听来自我们内部测试设备的UDP广播,我最近更新了另一个需要做同样事情的应用程序。两个应用程序必须能够在同一台计算机上共存。

目前,当我最近更新的应用程序尝试绑定到端口以侦听UDP广播并失败时,它只是报告端口不可用并建议继承的应用程序可能正在运行。如何让我的应用程序检测哪个应用程序实际上正在该端口上侦听?我已经完成了谷歌搜索,甚至搜索过这个网站,但到目前为止,除了在命令行使用任务管理器,TCPView或netstat之外,我一直找不到任何东西。

我更喜欢使用Windows API或Windows系统COM组件的技术,因为这两个应用程序都是用VB6编写的。 (我知道,我知道,但我必须维护这些应用程序,因为它们是关键任务。)但是,如果我在新的开发工作中需要它,.NET解决方案也会很有用。

1 个答案:

答案 0 :(得分:2)

netstat -n -o

这将显示进程ID,从那里你可以查看任务管理器的进程查看器,转到视图 - >列...并检查进程ID(PID)。然后,您可以看到在该端口上侦听的进程的名称。

当然,您需要以编程方式完成此操作,并且GetTCPTable2 API是最好的,正如已经建议的那样。实际上,如果你查看netstat.exe的IAT(导入地址表),它实际上使用该API来获取该信息。

有一种方法可以直接与命令窗口通信并使用管道获取其输出,它可以正常工作,但理想的方法是简单地使用相同的API netstat使用。