/// <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);

  

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

  1. DNS 网关 子网掩码介绍

    DNS DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机 ...

  2. suse 12 配置ip,dns,网关,hostname,ssh以及关闭防火墙

    suse-linux:~ # cat /etc/issue Welcome to SUSE Linux Enterprise Server 12 SP3 (x86_64) - Kernel \r (\ ...

  3. centos 修改DNS,网关,IP地址

    1.CentOS 修改DNS 修改对应网卡的DNS的配置文件 # vi /etc/resolv.conf  修改以下内容 nameserver 8.8.8.8 #google域名服务器 nameser ...

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

    IP地址使用自动获取IP方式,可以获取到IP地址和子网掩码,默认网关无法获取,显示0.0.0.0,通过修复Winsock和LSP可以解决该问题,具体步骤如下:一.修复winsock1.单击开始> ...

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

    CentOS 网络设置修改 指定IP地址 DNS 网关(实测 笔记)   环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G) 系统版本:Centos-6.5-x86_64 ...

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

    1.先停止桌面版自带的NetworkManager,这东西很难用,且有些设置需要重启. sudo systemctl stop NetworkManager.service sudo systemct ...

  7. CentOS 修改IP地址, DNS, 网关

    一.CentOS 修改IP地址 修改对应网卡的IP地址的配置文件# vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改以下内容DEVICE=eth0 #描述 ...

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

    Request.ServerVariables("REMOTE_ADDR") 来取得客户端的IP地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的IP地址,而不是真 ...

  9. webapi获取请求地址的IP

    References required: HttpContextWrapper - System.Web.dll RemoteEndpointMessageProperty - System.Serv ...

随机推荐

  1. java对象的结构

    [Java对象解析]不得不了解的对象头 一个Java对象到底占用多大内存? JVM源码分析之java对象头实现 java对象在内存中的结构(转帖) 一个Java对象到底占多大内存? 在Hotspot ...

  2. JAVA并发编程学习笔记------多线程调优

    1. 多线程场景下尽量使用并发容器代替同步容器 (如ConcurrentHashMap代替同步且基于散列的Map, 遍历操作为主要操作的情况下用CopyOnWriteArrayList代替同步的Lis ...

  3. jdbc连接2(不可以注入)

    public void login1(String username, String password) throws ClassNotFoundException, SQLException { / ...

  4. php5数组与php7数组区别

    http://ju.outofmemory.cn/entry/197064 http://www.fzb.me/2015-9-16-php7-implementation-hashtable.html ...

  5. selenium IDE的基本命令

    waitForText.verifyText和asserText命令 waitForText语句在测试执行时用来判断某些文本是否存在界面中.若界面上显示了指定文本,测试程序会继续执行:若等待一段时间后 ...

  6. Xcode 9 Analyzing Crash Reports

    Analyzing Crash Reports After you distribute your app for testing by using TestFlight or after you m ...

  7. POJ 2346

    #include<iostream> #include<stdio.h> using namespace std; ,,,,}; int main() { int num; c ...

  8. AngularJS入门之动画

    AngularJS中ngAnimate模块支持动画效果,但是ngAnimate模块并未包含在AngularJS核心库中,因此需要使用ngAnimate需要在定义Module时声明对其的引用. Angu ...

  9. C#获取文件版本、文件大小等信息

    使用以下C#程序代码可以非常方便地获取Windows系统中任意一个文件(尤其是可执行文件)的文件版本.文件大小.版权.产品名称等信息.所获取到的信息类似于在Windows操作系统中右键点击该文件,然后 ...

  10. 剑指offer四十七之求1+2+3+...+n

    一.题目 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 二.思路 1.需利用逻辑与的短路特性实现递归终 ...