C#检查是否只有一个适配器处于活动状态/ Up

时间:2015-12-14 15:04:02

标签: c# networking network-programming

我需要知道是否只有一个适配器处于活动状态/ up并获得他的名字。 那是我现在的代码

List<string> _adapters = new List<string>();

foreach (NetworkInterface f in NetworkInterface.GetAllNetworkInterfaces())
{
    if (f.OperationalStatus == OperationalStatus.Up && !f.Name.Contains("Loopback") 
        && !f.Name.Contains("isatap") 
        && !f.Name.Contains("Pseudo") 
        && !f.Name.Contains("Teredo")
        && !f.Name.Contains("6To4"))
    {
        _adapters.Add(f.Name);
    }
}

if (_adapters.Count == 1)
{
    return true;
}
else
{
    return false;
}

现在我必须排除一些隧道和环回适配器,如Loopback,isatap,Pseudo,Teredo,6To4。我认为这个解决方案并不是很好。现在我问,是否有可能排除这些&#34;伪&#34;适配器完全?

修改 我发现另一个不是100%完美的解决方案来处理这个问题,但我认为它比与名称的比较更好。

List<string> _adapters = new List<string>();
foreach (NetworkInterface f in NetworkInterface.GetAllNetworkInterfaces())
{
    if (f.OperationalStatus == OperationalStatus.Up &&
        !f.NetworkInterfaceType.ToString().Contains("Tunnel") &&
        !f.NetworkInterfaceType.ToString().Contains("Loopback"))    
    {
         Console.WriteLine(f.Name);
         _adapters.Add(f.Name.ToString());
    }
}

0 个答案:

没有答案