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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介:
说明:本人准备写一些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 ,如需转载请自行联系原作者



相关文章
|
1月前
|
安全 物联网 物联网安全
量子通信网络:安全信息交换的新平台
【10月更文挑战第6天】量子通信网络作为一种全新的安全信息交换平台,正逐步展现出其独特的优势和巨大的潜力。通过深入研究和不断探索,我们有理由相信,量子通信网络将成为未来信息安全领域的重要支柱,为构建更加安全、高效、可靠的信息社会贡献力量。让我们共同期待量子通信网络在未来的广泛应用和美好前景!
|
17天前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLO11改进 - C3k2融合】C3k2DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
【YOLO11改进 - C3k2融合】C3k2DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目DWRSeg是一种高效的实时语义分割网络,通过将多尺度特征提取分为区域残差化和语义残差化两步,提高了特征提取效率。它引入了Dilation-wise Residual (DWR) 和 Simple Inverted Residual (SIR) 模块,优化了不同网络阶段的感受野。在Cityscapes和CamVid数据集上的实验表明,DWRSeg在准确性和推理速度之间取得了最佳平衡,达到了72.7%的mIoU,每秒319.5帧。代码和模型已公开。
【YOLO11改进 - C3k2融合】C3k2DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
|
18天前
|
监控 安全 测试技术
网络信息系统的整个生命周期
网络信息系统规划、设计、集成与实现、运行维护及废弃各阶段介绍。从企业需求出发,经过可行性研究和技术评估,详细设计系统架构,完成设备安装调试和系统集成测试,确保稳定运行,最终安全退役。
32 1
网络信息系统的整个生命周期
|
4天前
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
25 5
|
7天前
|
SQL 安全 算法
网络安全的隐形盾牌:漏洞防御与信息加密的艺术
【10月更文挑战第36天】在数字世界的海洋中,网络安全犹如一艘船的保护罩,守护着我们的隐私和数据安全。本文将揭开网络安全的神秘面纱,从常见的网络漏洞到先进的加密技术,再到培养必要的安全意识,我们将一步步构建起防御的堡垒。文章不仅分享技术细节,还强调了在个人和组织层面采取积极措施的重要性。
|
18天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
191 2
|
18天前
|
安全 网络协议 算法
网络空间安全之一个WH的超前沿全栈技术深入学习之路(8-1):主动信息收集之ping、Nmap 就怕你学成黑客啦!
网络空间安全之一个WH的超前沿全栈技术深入学习之路(8-1):主动信息收集之ping、Nmap 就怕你学成黑客啦!
|
5天前
|
网络协议 Unix Linux
精选2款C#/.NET开源且功能强大的网络通信框架
精选2款C#/.NET开源且功能强大的网络通信框架
|
17天前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLO11改进 - C3k2融合】C3k2融合DWRSeg二次创新C3k2_DWRSeg:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
【YOLO11改进 - C3k2融合】C3k2融合DWRSDWRSeg是一种高效的实时语义分割网络,通过将多尺度特征提取方法分解为区域残差化和语义残差化两步,提高了多尺度信息获取的效率。网络设计了Dilation-wise Residual (DWR) 和 Simple Inverted Residual (SIR) 模块,分别用于高阶段和低阶段,以充分利用不同感受野的特征图。实验结果表明,DWRSeg在Cityscapes和CamVid数据集上表现出色,以每秒319.5帧的速度在NVIDIA GeForce GTX 1080 Ti上达到72.7%的mIoU,超越了现有方法。代码和模型已公开。
|
1月前
|
SQL 安全 算法
网络安全与信息安全:构建数字世界的防线在数字化浪潮席卷全球的今天,网络安全与信息安全已成为维系社会秩序、保障个人隐私与企业机密的重要基石。本文旨在深入探讨网络安全漏洞的本质、加密技术的前沿进展以及提升安全意识的有效策略,为读者揭示数字时代下信息保护的核心要义。
本文聚焦网络安全与信息安全领域,详细剖析了网络安全漏洞的形成机理、常见类型及其潜在危害,强调了及时检测与修复的重要性。同时,文章系统介绍了对称加密、非对称加密及哈希算法等主流加密技术的原理、应用场景及优缺点,展现了加密技术在保障数据安全中的核心地位。此外,针对社会普遍存在的安全意识薄弱问题,提出了一系列切实可行的提升措施,如定期安全培训、强化密码管理、警惕钓鱼攻击等,旨在引导公众树立全面的网络安全观,共同构筑数字世界的安全防线。