我需要我的程序来检查给定的Windows进程是否滥用网络。 我想枚举进程tcp和udp套接字,看看它们在给定时间内传输了多少数据。
是否有可以提供此类信息的C或.Net API?
答案 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