轉:擷取本網資訊

來源:互聯網
上載者:User

 

這是一個擷取系統所有服務的程式,為了簡化程式,代碼仍以控制台形式提供,大家可以另外封裝自己希望的功能。

核心代碼:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.