windows - 如何枚举给定Windows进程上的套接字?

标签 windows sockets

我需要我的程序来检查给定的Windows进程是否正在滥用网络。
我想枚举进程tcp和udp套接字,并查看它们在给定期间内传输了多少数据。

是否有C或.Net API可以提供此类信息?

最佳答案

在Win2k上,可以使用GetTcpTable(),GetTcp6Table(),GetUdpTable()和GetUdp6Table()来查找所有 Activity 的套接字连接。但是要将它们与特定的进程ID匹配,您将必须手动枚举系统的打开句柄以查找TCP/UDP句柄,然后从它们中查询进程信息。

在XP上,可以使用AllocateAndGetTcpExTableFromStack()和AllocateAndGetUdpExTableFromStack(),它们可以在每个套接字连接中返回进程ID。

在XP SP2和更高版本上,可以使用GetExtendedTcpTable()和GetExtendedUdpTable(),它们也可以通过每个套接字连接返回进程ID。

关于windows - 如何枚举给定Windows进程上的套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1337392/

相关文章:

windows - 有什么方法可以将 ls 从 Get-ChildItem 重新映射到 PowerShell 中的另一个命令吗?

java - 为什么我的聊天程序仅当两个客户端都在同一台计算机上时才能工作?

ruby - Websocket发送无法从电话网络发送

c++ - 在类中创建新线程(windows)

windows - 在 Cygwin 上找不到 sudo 命令

java - netbeans、cmd 和 .bat 或 .cmd 中的路径差异

python - 为什么该服务器程序无法向客户端发送任何内容?

windows - 任何显示运行线程详细信息的 Windows 工具?

python - 如何使用 scapy 欺骗 UDP 数据包中的 IP 地址

java - 使用 android 和 Java 套接字连接到服务器,并需要用户的许可