public static void DisplayTypeAndAddress()
{
bool bAvailable = NetworkInterface.GetIsNetworkAvailable();
IPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties();
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
Console.WriteLine("Interface information for {0}.{1} ",
computerProperties.HostName, computerProperties.DomainName);
string physicalAddress = "";
foreach (NetworkInterface adapter in nics)
{
IPInterfaceProperties properties = adapter.GetIPProperties();
Console.WriteLine(adapter.Description);
Console.WriteLine(String.Empty.PadLeft(adapter.Description.Length, '='));
Console.WriteLine(" Interface type .......................... : {0}", adapter.NetworkInterfaceType);//网络类型
physicalAddress = adapter.GetPhysicalAddress().ToString();
Console.WriteLine(" Physical Address ........................ : {0}", physicalAddress);
Console.WriteLine(" Is receive only.......................... : {0}", adapter.IsReceiveOnly);
Console.WriteLine(" Multicast................................ : {0}", adapter.SupportsMulticast);
Console.WriteLine();
string versions = "";
string ip = "";
if (adapter.Supports(NetworkInterfaceComponent.IPv4))
{
versions = "IPv4";
//IPAddressCollection winsServers = properties.WinsServersAddresses;
//foreach (IPAddress ipadd in winsServers)
//{
// AddressFamily af = ipadd.AddressFamily;
// ip = ipadd.ToString();
//}
}
if (adapter.Supports(NetworkInterfaceComponent.IPv6))
{
if (versions.Length > 0)
{
versions += " ";
}
versions += "IPv6";
}
string id = adapter.Id;
/* 判断adapter是否联网
* 1、NetworkInterfaceType不是Loopback
* 2、NetworkInterfaceType不是Tunnel
* 3、OperationalStatus为UP
*/
string connectionStatus = "";
if (adapter.NetworkInterfaceType == NetworkInterfaceType.Loopback)//
{
continue;
}
//A network connection is considered to be available if any network interface
//is marked "up" and is not a loopback or tunnel interface.
OperationalStatus status = adapter.OperationalStatus;
if (OperationalStatus.Up == status && NetworkInterfaceType.Tunnel != adapter.NetworkInterfaceType)//
{
connectionStatus = "Connected";
}
else
{
connectionStatus = "UnConnected";
}
Console.WriteLine(" DNS suffix .............................. : {0}", properties.DnsSuffix);
string label;
if (adapter.Supports(NetworkInterfaceComponent.IPv4))
{
IPv4InterfaceProperties ipv4 = properties.GetIPv4Properties();
Console.WriteLine(" MTU...................................... : {0}", ipv4.Mtu);
if (ipv4.UsesWins)
{
IPAddressCollection winsServers = properties.WinsServersAddresses;
foreach (IPAddress ipadd in winsServers)
{
ip = ipadd.ToString();
}
}
}
Console.WriteLine(" DNS enabled ............................. : {0}",
properties.IsDnsEnabled);
Console.WriteLine(" Dynamically configured DNS .............. : {0}",
properties.IsDynamicDnsEnabled);
Console.WriteLine(" Receive Only ............................ : {0}",
adapter.IsReceiveOnly);
Console.WriteLine(" Multicast ............................... : {0}",
adapter.SupportsMulticast);
IPv4InterfaceStatistics iss = adapter.GetIPv4Statistics();
Console.WriteLine();
}
}