這是一個擷取系統所有服務的程式,為了簡化程式,代碼仍以控制台形式提供,大家可以另外封裝自己希望的功能。
核心代碼:
using System;
using System.Collections.Generic;
using System.Data.Sql;
using System.Net;
using System.Net.NetworkInformation;
namespace AllSqlServer
{
class Program
{
static void Main(string[] args)
{
ShowNetworkInterfaces();
Console.ReadLine();
}
public static void ShowNetworkInterfaces()
{
IPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties();
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
Console.WriteLine("Interface information for {0}.{1} ",
computerProperties.HostName, computerProperties.DomainName);
if (nics == null || nics.Length < 1)
{
Console.WriteLine(" No network interfaces found.");
return;
}
Console.WriteLine(" Number of interfaces .................... : {0}", nics.Length);
foreach (NetworkInterface adapter in nics)
{
IPInterfaceProperties properties = adapter.GetIPProperties();
Console.WriteLine();
Console.WriteLine(adapter.Description);
Console.WriteLine(String.Empty.PadLeft(adapter.Description.Length, '='));
Console.WriteLine(" 網路類型 .......................... : {0}", adapter.NetworkInterfaceType);
Console.WriteLine(" MAC地址 ........................ : {0}",
adapter.GetPhysicalAddress().ToString());
Console.WriteLine(" Operational status ...................... : {0}",
adapter.OperationalStatus);
string versions = "";
if (adapter.Supports(NetworkInterfaceComponent.IPv4))
{
versions = "IPv4";
}
if (adapter.Supports(NetworkInterfaceComponent.IPv6))
{
if (versions.Length > 0)
{
versions += " ";
}
versions += "IPv6";
}
Console.WriteLine(" IP version .............................. : {0}", versions);
ShowIPAddresses(properties);
if (adapter.NetworkInterfaceType == NetworkInterfaceType.Loopback)
{
continue;
}
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;
if (winsServers.Count > 0)
{
label = " WINS Servers ............................ :";
ShowIPAddresses(label, winsServers);
}
}
}
Console.WriteLine("是否被配置為向網域名稱系統 (DNS) 伺服器發送名稱解析查詢:............................. : {0}",
properties.IsDnsEnabled);
Console.WriteLine("是否被配置為自動向網域名稱系統 (DNS) 註冊其 IP 位址資訊: .............. : {0}",
properties.IsDynamicDnsEnabled);
Console.WriteLine(" Receive Only ............................ : {0}",
adapter.IsReceiveOnly);
Console.WriteLine(" Multicast ............................... : {0}",
adapter.SupportsMulticast);
Console.WriteLine();
}
}
private static void ShowIPAddresses(IPInterfaceProperties properties)
{
Console.WriteLine("Dhcp伺服器位址:");
ShowIPAddressCollection(properties.DhcpServerAddresses);
Console.WriteLine("DNS伺服器 :");
ShowIPAddressCollection(properties.DnsAddresses);
Console.WriteLine("網關 :");
ShowGatewayIPAddressInformationCollection(properties.GatewayAddresses);
Console.WriteLine("是否被配置為向網域名稱系統 (DNS) 伺服器發送名稱解析查詢:" + properties.IsDnsEnabled.ToString());
Console.WriteLine("是否被配置為自動向網域名稱系統 (DNS) 註冊其 IP 位址資訊:" + properties.IsDynamicDnsEnabled.ToString());
Console.WriteLine("分配給此介面的多路廣播位址:");
ShowMulticastIPAddressInformationCollection(properties.MulticastAddresses);
Console.WriteLine("Windows Internet 名稱服務 (WINS) 伺服器的地址:");
ShowIPAddressCollection(properties.WinsServersAddresses);
}
private static void ShowIPAddresses(string label,IPAddressCollection winsServers)
{
Console.WriteLine("-----"+label+"-----");
ShowIPAddressCollection(winsServers);
}
private static void ShowIPAddressInformationCollection(IPAddressInformationCollection collection)
{
for (int i = 0; i < collection.Count; i++)
{
Console.WriteLine(GetIPAddressInfo(collection[i].Address));
}
}
private static void ShowIPAddressCollection(IPAddressCollection collection)
{
for (int i = 0; i < collection.Count; i++)
{
Console.WriteLine(GetIPAddressInfo(collection[i]));
}
}
private static void ShowMulticastIPAddressInformationCollection(MulticastIPAddressInformationCollection collection)
{
for (int i = 0; i < collection.Count; i++)
{
Console.WriteLine(GetIPAddressInfo(collection[i].Address));
}
}
private static string GetIPAddressInfo(IPAddress address)
{
byte[] bytes = address.GetAddressBytes();
string ipString = null;
for(int i=0;i<bytes.Length-1;i++)
{
ipString += bytes[i] + ".";
}
return ipString + bytes[bytes.Length - 1];
}
private static void ShowGatewayIPAddressInformationCollection(GatewayIPAddressInformationCollection collection)
{
for (int i = 0; i < collection.Count; i++)
{
Console.WriteLine(GetIPAddressInfo(collection[i].Address));
}
}
}
}
在我原生執行結果如下:
Interface information for zhoufoxcn.sooyie
Number of interfaces .................... : 2
NVIDIA nForce Networking Controller
===================================
網路類型 .......................... : Ethernet
MAC地址 ........................ : 003018ADB71C
Operational status ...................... : Up
IP version .............................. : IPv4
Dhcp伺服器位址:
255.255.255.255
DNS伺服器 :
192.168.3.3
202.99.192.66
網關 :
192.168.3.1
是否被配置為向網域名稱系統 (DNS) 伺服器發送名稱解析查詢:False
是否被配置為自動向網域名稱系統 (DNS) 註冊其 IP 位址資訊:True
分配給此介面的多路廣播位址:
224.0.0.1
Windows Internet 名稱服務 (WINS) 伺服器的地址:
0.0.0.0
0.0.0.0
DNS suffix .............................. :
MTU...................................... : 1500
是否被配置為向網域名稱系統 (DNS) 伺服器發送名稱解析查詢:...........................
.. : False
是否被配置為自動向網域名稱系統 (DNS) 註冊其 IP 位址資訊: .............. : True
Receive Only ............................ : False
Multicast ............................... : True
MS TCP Loopback interface
=========================
網路類型 .......................... : Loopback
MAC地址 ........................ :
Operational status ...................... : Up
IP version .............................. : IPv4
Dhcp伺服器位址:
DNS伺服器 :
網關 :
是否被配置為向網域名稱系統 (DNS) 伺服器發送名稱解析查詢:False
是否被配置為自動向網域名稱系統 (DNS) 註冊其 IP 位址資訊:True
分配給此介面的多路廣播位址:
224.0.0.1
Windows Internet 名稱服務 (WINS) 伺服器的地址:
轉:http://blog.csdn.net/zhoufoxcn/archive/2007/05/29/1630123.aspx