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

时间:2009-08-26 20:48:04

标签: windows sockets

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

你可能会看看WinPcap。 http://www.winpcap.org/

SharpPcap提供C#.net版本。 http://www.tamirgal.com/blog/page/SharpPcap.aspx