C#小技巧系列之四:获取本地网络信息

简介:
说明:本人准备写一些C#有关的小技巧系列文章,这些文章含金量并不高,代码难度不大,不过因为问的次数比较多,从而导致本人决定用自己所知的方式写这一系列文章,可以看做“趣味导学”系列吧。
这是一个获取系统所有服务的程序,为了简化程序,代码仍以控制台形式提供,大家可以另外封装自己希望的功能。
核心代码:
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) 服务器的地址:














本文转自周金桥51CTO博客,原文链接: http://blog.51cto.com/zhoufoxcn/164406 ,如需转载请自行联系原作者



相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
4天前
|
存储 监控 安全
数字堡垒的构筑者:网络安全与信息保护
【5月更文挑战第17天】在数字化时代,数据成为了新的石油,而网络安全则是保护这些宝贵资源不受黑客侵袭的防线。本文深入探讨了网络安全漏洞的本质、加密技术的最新进展以及提升个人和企业安全意识的重要性。通过分析当前的网络威胁和防御策略,我们提供了一系列的知识和工具,旨在帮助读者构建更加安全的数字环境。
|
1天前
|
云安全 安全 网络安全
云端防御:云计算环境中网络安全与信息保护的融合策略
【5月更文挑战第20天】 在数字化浪潮中,云计算已成为企业存储和处理数据的首选平台。随着云服务的普及,如何确保数据的安全性和隐私性成为了一个亟待解决的问题。本文探讨了在云计算环境下,网络安全和信息保护的重要性,以及实施有效安全措施所面临的挑战。通过分析当前云服务的安全威胁,我们提出了一系列融合策略,包括多因素认证、加密技术、访问控制以及持续监控等,以增强云基础设施的安全性。此外,文中还讨论了合规性和法规对维护云计算安全的影响,并展望了未来技术的发展方向。
4 0
|
1天前
|
SQL 存储 安全
网络防御先锋:洞悉网络安全漏洞与加固信息防线
【5月更文挑战第20天】 在数字化时代,数据如同新型燃料驱动社会发展。然而,网络安全威胁如影随形,无孔不入。本文将深入探讨网络安全的脆弱环节——安全漏洞,以及如何通过加密技术和提升安全意识构建坚固的信息防线。我们将剖析常见漏洞类型,介绍当前加密技术的进展,并分享培养安全意识的最佳实践,以期为读者提供全面的网络安全知识框架。
|
1天前
|
存储 安全 网络安全
构筑安全防线:云计算环境中的网络安全与信息保护策略
【5月更文挑战第20天】 在数字化浪潮推动下,企业与组织纷纷拥抱云计算,享受其带来的灵活性、可扩展性和成本效益。然而,随着数据和应用逐渐迁移至云端,如何确保网络和信息的安全稳定成为了一个挑战。本文将探讨云计算环境下的网络安全威胁,分析云服务模型中的安全漏洞,并提出一系列创新性的信息保护策略。通过深入剖析最新的防御机制和技术,我们旨在为读者提供一个全面的网络安全指南,帮助其在云时代中维护数据完整性和隐私。
|
1天前
|
SQL 安全 算法
网络防御先锋:洞悉网络安全漏洞与加固信息防线
【5月更文挑战第20天】在数字化时代,网络安全和信息安全已成为维护社会稳定和个人隐私的重要屏障。本文深入探讨了网络安全中的关键漏洞、先进加密技术以及提升安全意识的必要性,旨在为读者提供一套全面的网络安全知识框架。通过对网络威胁的剖析,我们展示了如何运用现代加密方法保护数据不被非法访问,并强调了培养全民网络安全意识的重要性。文章的目的是使读者对网络安全有一个清晰的认识,并能采取有效措施保护自己的数字身份。
|
1天前
|
监控 安全 网络安全
云端防御策略:确保云服务中的网络安全与信息完整性
【5月更文挑战第20天】 在数字化转型的浪潮中,云计算已成为企业IT架构的核心。随之而来的是对网络安全和信息保护的新挑战。本文深入探讨了在多租户云环境中维护数据安全的策略和技术,重点分析了加密、访问控制以及入侵检测机制的最佳实践。通过综合运用这些技术,可以构建一个既灵活又安全的云服务环境,以应对日益复杂的网络威胁。
|
1天前
|
监控 安全 网络安全
云端守卫:云计算环境下的网络安全与信息保护策略
【5月更文挑战第20天】 在数字化转型的浪潮中,云计算已成为推动企业创新和效率提升的关键驱动力。然而,随着数据和应用逐渐迁移至云端,传统的安全边界变得模糊,新的安全威胁和挑战不断涌现。本文深入探讨了云计算环境中的网络安全与信息保护问题,分析了云服务模型(IaaS, PaaS, SaaS)所面临的安全风险,并提出了一系列创新性的安全策略和技术措施,以强化数据隐私、确保业务连续性,并提高整体安全防护水平。通过综合运用加密技术、身份认证、访问控制以及实时监控等手段,构建了一个多层次、动态自适应的网络安全防御体系,旨在为云服务提供商和使用者提供全面的安全保障。
|
3天前
|
监控 安全 网络安全
云端防御:云计算环境中的网络安全与信息保护策略
【5月更文挑战第18天】 随着企业和个人用户对云服务依赖程度的增加,云计算环境的安全性成为了一个不容忽视的问题。本文探讨了在动态且复杂的云服务框架下,如何通过创新的技术手段和综合的策略来增强网络安全和信息保护。重点关注了数据加密、身份认证、入侵检测系统以及安全事件管理等关键技术的应用,并提出了基于行为分析和机器学习的安全模型,以期为云服务用户提供更高层次的安全保障。
|
4天前
|
云安全 安全 网络安全
云端防御:云计算环境中的网络安全与信息保护策略
【5月更文挑战第18天】 随着企业逐步过渡至云服务,数据和应用的集中化带来了便利性与成本效益,但同时也暴露了新的安全挑战。本文深入探讨在复杂的云计算环境中,如何有效实施网络安全措施和信息安全管理,保障企业资产和用户数据的安全性。我们将分析当前主流的云安全策略、加密技术、身份验证机制,并讨论如何构建一个多层次的安全框架来应对不断演变的网络威胁。通过案例研究和最佳实践分享,为读者提供实用的防护指南和策略建议。
9 3
|
4天前
|
云安全 安全 网络安全
云端防线:云计算环境中的网络安全与信息保护
【5月更文挑战第17天】 随着企业逐渐将关键业务迁移到云平台,云计算服务的安全性和数据隐私成为了不容忽视的问题。本文深入探讨了在多租户云环境中维护网络安全的策略和挑战。通过分析当前云安全的技术手段,包括加密、访问控制、入侵检测系统(IDS)和安全信息与事件管理(SIEM),我们提出了一个多层次的安全框架,以增强对恶意攻击的防护能力。同时,文章也讨论了合规性和法规对确保信息安全的重要性,以及未来云计算安全发展的潜在趋势。