如何检测 Windows 中打开的套接字?

Posted

技术标签:

【中文标题】如何检测 Windows 中打开的套接字?【英文标题】:How to detect opened sockets in Windows? 【发布时间】:2010-10-08 15:24:00 【问题描述】:

在 Windows XP(如有必要,SP2)中,是否有任何方法可以从用户空间应用程序检测 TCP/UDP 套接字(来自 任何 进程)已打开?我知道GetExtendedTcpTable()GetExtendedUdpTable() 函数,但它们只检测当前 打开的套接字。有些套接字在打开后立即关闭,我能够检测到它们存在的唯一方法是在它们打开时收到通知。

如果用户空间不存在这样的机制,我愿意进入内核空间来获得这个功能。是否有任何记录/未记录的功能可以做到这一点?

【问题讨论】:

Windows 包含可执行命令netstat.exe,它显示了当前打开和监听的连接...您也许可以使用它。 【参考方案1】:

您可能需要编写 WinSock LSP 或 SPI 驱动程序来检测它,而无需直接挂钩每个正在运行的进程。

【讨论】:

以上是关于如何检测 Windows 中打开的套接字?的主要内容,如果未能解决你的问题,请参考以下文章

UDP套接字缓冲区溢出检测

如何检测远程侧套接字关闭? [复制]

windows套接字注册表项问题

如何检测套接字连接何时丢失?

如何检测 TCP 套接字断开连接(使用 C Berkeley 套接字)

检测非阻塞套接字上的关闭连接