如何通过 Windows API GetExtendedTCpTable 检测新的 TCP 连接

Posted

技术标签:

【中文标题】如何通过 Windows API GetExtendedTCpTable 检测新的 TCP 连接【英文标题】:How to detect a NEW TCP Connections By Windows APIs GetExtendedTCpTable 【发布时间】:2011-07-22 06:29:44 【问题描述】:

我已经为本地电脑制作了一个用于查看活动 tcp/udp 连接的应用程序。现在,我的连接列表是静态的,如何使其成为动态的?我尝试使用 Timer 事件,但 GetExtendedTCPTable 返回完整的连接列表。我只希望将新连接添加到我的 listView 中。是否有一些 API 可以做同样的事情?还是我必须手动跟踪所有连接,比较它们,然后添加到显示?

提前致谢

【问题讨论】:

我不知道你的问题的答案,但我知道:处理UDP时没有这样的连接。 UDP 是一种数据报协议,因此无连接。 是的,感谢您的澄清。那么如何为 TCP 做呢 Here is the list of Ip Helper Functions at MSDN。据我所知,当检测到新连接时,没有任何功能可以发出通知。使用计时器汇集此类敏感信息听起来是个坏主意(大量数据,网络可能会因为汇集而变慢)。 AFAIK 防火墙应用程序使用 NDIS 驱动程序执行此操作。 @cosimn:您能否提供一些代码/URL 让我开始使用 NDIS 驱动程序? @CyprUS 你不能在 delphi 中编写驱动程序 【参考方案1】:

您可以使用计时器,首先将所有连接放在一个列表中,然后在下一个计时器周期中使用另一个列表并比较它们并查看发生了什么变化。我认为在这个问题上不存在优雅的方法。

【讨论】:

windows的人一定看看这个问题。这可能会让我很头疼:)

以上是关于如何通过 Windows API GetExtendedTCpTable 检测新的 TCP 连接的主要内容,如果未能解决你的问题,请参考以下文章

通过 Windows 的 API 检索 PCI 坐标(用户模式)

如何在 apache cgi 应用程序中调用 windows api (FindWindow)?

如何使用 windows api 获取输入

如何使用 Windows MediaCapture API 捕获“仅音频”?

如何使用 Windows 运行时使用 C# 实现 C++ API?

使用 vba 和 windows api 通过 Excel 保存 hexeditor 文件