csharp:获取 DNS、网关、子网掩码、IP

/// <summary>
    /// DNS、网关、子网掩码、IP
    /// 涂聚文 2015
    /// </summary>
    public class IPAddressString
    {
        /// <summary>
        /// IP地址
        /// </summary>
        private string _localAddress;
        /// <summary>
        /// 子网掩码
        /// </summary>
        private string _ipSubnet;
        /// <summary>
        /// 默认网关
        /// </summary>
        private string _defaultIPGateway;
        /// <summary>
        /// DNS
        /// </summary>
        private string _firstDNS;
        /// <summary>
        /// 备用DNS
        /// </summary>
        private string _secondDNS;
        /// <summary>
        ///
        /// </summary>
        private string _hostName;
        /// <summary>
        ///
        /// </summary>
        private string _macname;

        /// <summary>
        /// IP地址
        /// </summary>
        public string LocalAddress
        {
            get { return _localAddress; }
            set { _localAddress = value; }
        }

        /// <summary>
        /// 子网掩码
        /// </summary>
        public string IpSubnet
        {
            get { return _ipSubnet; }
            set { _ipSubnet = value; }
        }
        /// <summary>
        /// 默认网关
        /// </summary>
        public string DefaultIPGateway
        {
            get { return _defaultIPGateway; }
            set { _defaultIPGateway = value; }
        }
        /// <summary>
        /// DNS
        /// </summary>
        public string FirstDNS
        {
            get { return _firstDNS; }
            set { _firstDNS = value; }
        }
        /// <summary>
        /// 备用DNS
        /// </summary>
        public string SecondDNS
        {
            get { return _secondDNS; }
            set { _secondDNS = value; }
        }
        /// <summary>
        ///
        /// </summary>
        public string HostName
        {
            get { return _hostName; }
            set { _hostName = value; }
        }
        /// <summary>
        ///
        /// </summary>
        public string Macname
        {
            get { return _macname; }
            set { _macname = value; }
        }
    }

/// <summary>
        ///获取 DNS、网关、子网掩码、IP
        ///GEOVIN DU
        /// </summary>
        /// <returns></returns>
        public IPAddressString getIp()
        {
            IPAddressString ip = new IPAddressString();
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection nics = mc.GetInstances();
            foreach (ManagementObject nic in nics)
            {
                if (Convert.ToBoolean(nic["ipEnabled"]) == true)
                {
                    // Get IP,SubNetMask,Gateway
                   ip.LocalAddress = (nic["IPAddress"] as string[])[0];
                   ip.IpSubnet = (nic["IPSubnet"] as string[])[0];
                   ip.DefaultIPGateway = (nic["DefaultIPGateway"] as string[])[0];
                   ip.Macname = nic["MacAddress"].ToString();
                   ip.HostName = Dns.GetHostName();//计算机名
                }
            }

            // Get DNS
            NetworkInterface[] ifs = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface netif in ifs)
            {
                IPInterfaceProperties properties = netif.GetIPProperties();
                IPAddressCollection dnses = properties.DnsAddresses;
                if (dnses.Count > 0)
                {
                    int i = 0;
                    foreach (IPAddress ipAddr in dnses)
                    {
                        // Set DNS To DNS TextBox
                        if (i == 0)
                            ip.FirstDNS = ipAddr.ToString();
                        else
                            ip.SecondDNS = ipAddr.ToString();

                        i++;
                    }
                    break;
                }
            }

            return ip;
        }

  测试

 //1
            //IPAddress ip = Dns.GetHostAddresses(Dns.GetHostName()).Where(address => address.AddressFamily == AddressFamily.InterNetwork).First();
            //MessageBox.Show(ip.ToString());

            //2
            //IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());
            //foreach (IPAddress addr in localIPs)
            //{
            //    if (addr.AddressFamily == AddressFamily.InterNetwork)
            //    {
            //        MessageBox.Show(addr.ToString());
            //    }               

            //}

            //3.
            //IPAddress ip = GetIPAddress("dusystem.com");
            //MessageBox.Show(ip.ToString());

            //4.
            //List<string> ips = GetIPAddress(Dns.GetHostName());
            //foreach (string s in ips)
            //{
            //    MessageBox.Show(s.ToString());
            //}

            //5
            IPAddressString ip = getIp();
            MessageBox.Show(ip.IpSubnet);

  

时间: 2024-11-11 07:04:11

csharp:获取 DNS、网关、子网掩码、IP的相关文章

linux通过Python获取本机的ip,mac,网关,子网掩码,网卡名

1.通过模块netifaces获取,当系统为Windows时,可能会有报错现象 import os import sys try: import netifaces except ImportError: try: command_to_execute = "pip install netifaces || easy_install netifaces" os.system(command_to_execute) except OSError: print "Can NOT

动态IP无法获取默认网关,显示0.0.0.0的解决办法

IP地址使用自动获取IP方式,可以获取到IP地址和子网掩码,默认网关无法获取,显示0.0.0.0,通过修复Winsock和LSP可以解决该问题,具体步骤如下:一.修复winsock1.单击开始> “运行 , 键入 cmd ,然后单击确定:2.键入 netsh winsock reset catalog 然后按 Enter键:3.键入 netsh int ip reset reset.log 然后按 Enter键:4.重新启动计算机. 如若还不能获取默认网关,继续执行步骤二二.修复LSP1.使用3

CentOS 网络设置修改 指定IP地址 DNS 网关(转)

CentOS 网络设置修改 指定IP地址 DNS 网关(实测 笔记) 环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G) 系统版本:Centos-6.5-x86_64 路由器网关:192.168.1.1 步骤: 1.查看网络MAC地址 [[email protected] ~]# cat /etc/udev/rules.d/70-persistent-net.rules 显示如下信息 # PCI device 0x15ad:0x07b0 (vmxnet3) SUBSY

Ubuntu 16.04修改MAC地址以及网络常用设置(IP/DNS/网关)

1.先停止桌面版自带的NetworkManager,这东西很难用,且有些设置需要重启. sudo systemctl stop NetworkManager.service sudo systemctl disable NetworkManager.service 2.设置MAC地址在帮助文档中应该找这个关键字:hardware address,设置有两种方式,临时和永久. 临时,直接使用命令行方式,重启后失效 sudo ifconfig eth0 down sudo ifconfig eth0

[转载]CentOS 修改IP地址, DNS, 网关

一.CentOS 修改IP地址 修改对应网卡的IP地址的配置文件 # vi /etc/sysconfig/network-scripts/ifcfg-eth0   电信 # vi /etc/sysconfig/network-scripts/ifcfg-eth0:1 网通 修改以下内容DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0BOOTPROTO=static #设置网卡获得ip地址的方式,可能的选项为static,dhcp或bootp,分别对应

CentOS 修改IP地址, DNS, 网关

一.CentOS 修改IP地址 修改对应网卡的IP地址的配置文件 # vi /etc/sysconfig/network-scripts/ifcfg-eth0   电信 # vi /etc/sysconfig/network-scripts/ifcfg-eth0:1 网通 # vi /etc/sysconfig/network-scripts/ifcfg-ens33 centos7 默认ens33 修改以下内容DEVICE=ens33 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它

asp.net 获取客服端ip,服务端ip

客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVariables.Get("Remote_Host").ToString(); 客户端浏览器IE: Request.Browser.Browser; 客户端浏览器 版本号: Request.Browser.MajorVersion;// 客户端操作系统: Request.Browser.Platfo

php中获取用户登陆的IP地址以及常规处理

本文为原创,转载请注明!  在我们开发多站点业务网站中,经常需要获取客户端的ip地址来给用户推荐其所在地址的信息的业务,用php获取客户端的ip地址,我们一般用到的PHP内置方法是$_SERVER['REMOTE_ADDR']. 但是这个函数只能获取访问者本地连接中设置的IP,局域网网关出口的IP地址,如果访问者使用代理服务器,将不获取代理服务器的IP,而是获取访问者网关的真实IP.如果将这个函数应用到限IP访问的网页中,别人即使通过限IP访问段中的代理服务器,也不能访问该页面. 所以我们一般为

ASP.NET获取真正的客户端IP地址的6种方法

Request.ServerVariables("REMOTE_ADDR") 来取得客户端的IP地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的IP地址,而不是真正的客户端IP地址,本文将介绍解决方法,需要的朋友可以参考下 在ASP中使用 Request.ServerVariables("REMOTE_ADDR") 来取得客户端的IP地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的IP地址,而不是真正的客户端IP地址. 要想透过代