是否可以使用.NET枚举当前进程的所有打开连接? (类似于netstat工具执行此操作的方式)
答案 0 :(得分:1)
您可以使用.NET中的IPGlobalProperties
类来执行此操作。通过实例,您可以获得netstat
通常显示的三件事中的任何一件:
GetActiveTcpConnections()
GetActiveTcpListeners()
GetActiveUdpListeners()
请注意,没有“UDP连接”这样的东西。
这是使用此API的netstat的简单版本:
using System;
using System.Net.NetworkInformation;
namespace NetStatNet
{
class Program
{
static void Main(string[] args)
{
var props = IPGlobalProperties.GetIPGlobalProperties();
Console.WriteLine(" Proto Local Address Foreign Address State");
foreach (var conn in props.GetActiveTcpConnections())
Console.WriteLine(" TCP {0,-23}{1,-23}{2}",
conn.LocalEndPoint, conn.RemoteEndPoint, conn.State);
foreach (var listener in props.GetActiveTcpListeners())
Console.WriteLine(" TCP {0,-23}{1,-23}{2}", listener, "", "Listening");
foreach (var listener in props.GetActiveUdpListeners())
Console.WriteLine(" UDP {0,-23}{1,-23}{2}", listener, "", "Listening");
Console.Read();
}
}
}
答案 1 :(得分:0)
IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties();
TcpConnectionInformation[] connections = properties.GetActiveTcpConnections();
你必须将这个数组转换为IEnum