gpt4 book ai didi

.net - 如何在.NET中获取某个进程持有的打开TCP连接数

转载 作者:行者123 更新时间:2023-12-03 21:15:07 25 4
gpt4 key购买 nike

我需要在 .NET 4.0 的 64 位 Windows 7 机器上监视单个进程持有的打开 TCP 连接数。

本文描述了在 32 位 Windows 上完成此任务的未记录的 Win32 API 方法“AllocateAndGetTcpExTableFromStack”:

http://www.codeproject.com/KB/IP/iphlpapi.aspx?display=Print

但这在我的机器上失败了(大概是因为我在 64 位上):

Unable to find an entry point named 'AllocateAndGetTcpExTableFromStack' in DLL 'iphlpapi.dll'.



我们如何在 64 位 Windows 上执行此操作?

最佳答案

您可能会通过 System.Net.NetworkInformation 获得一个良好的开端.特别是IPGlobalProperties.GetActiveTcpConnections .

但是,您会发现该库不会公开 PID,因此无法通过与每个连接关联的特定进程来缩小范围。我猜简单地解析控制台的输出会容易得多 netstat -ano到托管对象的集合中,并使用简单的 LINQ 查询根据进程 ID 拉出您需要的特定连接。但是,如果您要经常这样做,我不建议这样做,因为这将是一种非常慢的方法。

您也可以尝试使用 PInvoke for GetExtendedTcpTable()在上面引用的 DLL 中。我没有要测试的 x64 框,但这可能是对您尝试调用的特定函数的简单弃用。

关于.net - 如何在.NET中获取某个进程持有的打开TCP连接数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5400610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com