好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#网络适配器简单操作

网络的相关设置在项目开发中有较多的应用,有时候需要在项目中对网络信息进行相关设置。

现在提供提供几种相关的辅助方法类。

(1).IP地址

/// <summary>

   /// IP地址

   /// </summary>

   public string IpAddress

   {

    get

    {

     string ipAddress;

     var address = GetAddress();

     if (address == null )

     {

      ipAddress = string .Empty;

     }

     else

     {

      ipAddress = address.Address.ToString();

     }

     return ipAddress;

    }

    set { if (value == null ) throw new ArgumentNullException(nameof(value)); }

   }

(2).网关地址

/// <summary>

/// 网关地址

/// </summary>

public string Getway

{

  get

  {   

   string getway;

   if (Getwaryes != null && Getwaryes.Count > 0)

   {

 

    getway = Getwaryes[0].Address.ToString() == "0.0.0.0" ? "" : Getwaryes[0].Address.ToString();

   }

   else

   {

    getway = string .Empty;

   }

   return getway;

  }

  set { if (value == null ) throw new ArgumentNullException(nameof(value)); }

}

(3). DHCP服务器地址

/// <summary>

/// DHCP服务器地址

/// </summary>

public string DhcpServer

{

  get

  {

   string dhcpServer;

   if (DhcpServerAddresses != null && DhcpServerAddresses.Count > 0)

   {

    dhcpServer = DhcpServerAddresses[0].ToString();

   }

   else

   {

    dhcpServer = string .Empty;

   }

   return dhcpServer;

  }

  set { if (value == null ) throw new ArgumentNullException(nameof(value)); }

}

(4).MAC地址

/// <summary>

/// MAC地址

/// </summary>

public string MacAddres

{

  get

  {

   string macAddress;

   if (MacAddress == null )

    macAddress = string .Empty;

   else if (MacAddress.ToString().Length == 12)

   {

    macAddress = MacAddress.ToString().Insert(4, "-" ).Insert(9, "-" );

   }

   else

   {

    macAddress = MacAddress.ToString();

   }

   return macAddress;

  }

  set { if (value == null ) throw new ArgumentNullException(nameof(value)); }

}

(5). 主DNS地址

/// <summary>

/// 主DNS地址

/// </summary>

public string DnsMain

{

  get

  {

   var dnsMain = string .Empty;

 

   if (DnsAddresses.Count > 0)

   {

    if (IsIPAddress(DnsAddresses[0].ToString()))

    {

     dnsMain = DnsAddresses[0].ToString();

    }

   }

   else

   {

    dnsMain = string .Empty;

   }

   return dnsMain;

  }

  set { if (value == null ) throw new ArgumentNullException(nameof(value)); }

}

(6).备用DNS地址

/// <summary>

/// 备用DNS地址

/// </summary>

public string DnsBackup

{

  get

  {

   var dnsBackup = string .Empty;

   if (DnsAddresses.Count > 1)

   {

    if (IsIPAddress(DnsAddresses[1].ToString()))

    {

     dnsBackup = DnsAddresses[1].ToString();

    }

 

   }

   else

   {

    dnsBackup = string .Empty;

   }

   return dnsBackup;

  }

  set { if (value == null ) throw new ArgumentNullException(nameof(value)); }

}

(7).子网掩码

/// <summary>

/// 子网掩码

/// </summary>

public string Mask

{

  get

  {

   string mask;

   var address = GetAddress();

   if (address == null )

   {

    mask = "" ;

   }

   else

   {

    if (address.IPv4Mask != null )

    {

     mask = address.IPv4Mask.ToString();

    }

    else

    {

     mask = "255.255.255.0" ;

    }

     

   }

   return mask;

  }

  set { if (value == null ) throw new ArgumentNullException(nameof(value)); }

}

(8).属性

/// <summary>

  /// DNS集合

  /// </summary>

  public IPAddressCollection DnsAddresses { get ; set ; }

  /// <summary>

  /// 网关地址集合

  /// </summary>

  public GatewayIPAddressInformationCollection Getwaryes { get ; set ; }

 

  /// <summary>

  /// IP地址集合

  /// </summary>

  public UnicastIPAddressInformationCollection IpAddresses { get ; set ; }

 

  /// <summary>

  /// DHCP地址集合

  /// </summary>

  public IPAddressCollection DhcpServerAddresses { get ; set ; }

 

  /// <summary>

  /// 网卡MAC地址

  /// </summary>

  public PhysicalAddress MacAddress { get ; set ; }

 

  /// <summary>

  /// 是否启用DHCP服务

  /// </summary>

  public bool IsDhcpEnabled { get ; set ; }

 

  /// <summary>

  /// 描述信息

  /// </summary>

  public string Description { get ; set ; }

  /// <summary>

  /// 网络接口类型

  /// </summary>

  /// <returns></returns>

  public string NetworkInterfaceType { get ; set ; }

 

  /// <summary>

  /// 速度

  /// </summary>

  public string Speed { get ; set ; }

(9).是否是IP地址

/// <summary>

/// 是否是IP地址

/// </summary>

/// <param name="ipAddress"></param>

/// <returns></returns>

public bool IsIPAddress( string ipAddress)

{

  const string regexStr = @"^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$" ;

  var regex = System.Text.RegularExpressions.Regex.Match(ipAddress, regexStr);

  return regex.Success;

}

(10).启用DHCP服务

/// <summary>

/// 启用DHCP服务

/// </summary>

public bool EnableDhcp()

{

  var wmi = new ManagementClass( "Win32_NetworkAdapterConfiguration" );

  var moc = wmi.GetInstances();

  foreach (var o in moc)

  {

   var mo = (ManagementObject) o;

   if (!( bool )mo[ "IPEnabled" ])

    continue ;

   if (mo[ "SettingID" ].ToString() != NetworkInterfaceId) continue ;

   mo.InvokeMethod( "SetDNSServerSearchOrder" , null );

   mo.InvokeMethod( "EnableDHCP" , null );

  }

  //查询现适配器接口信息

  var networkAdapter = new NetworkAdapterUtil().GetNeworkAdapterByNetworkInterfaceId(NetworkInterfaceId);

  return networkAdapter != null && networkAdapter.IsDhcpEnabled;

}

(11).设置IP地址,子网掩码,网关,DNS

/// <summary>

  /// 设置IP地址,子网掩码,网关,DNS,

  /// </summary>

  public bool SetIpAddressSubMaskDnsGetway( string ipAddress, string subMask, string getWay, string dnsMain, string dnsBackup)

  {

   string [] dnsArray;

   if ( string .IsNullOrEmpty(dnsBackup))

   {

    dnsArray = new [] { dnsMain };

   }

   else

   {

    dnsArray = new [] { dnsMain, dnsBackup };

   }

   return SetIpAddress( new [] { ipAddress }, new [] { subMask }, new [] { getWay }, dnsArray);

 

  }

 

  /// <summary>

  /// 设置IP地址和子网掩码

  /// </summary>

  public bool SetIpAddressAndSubMask( string ipAddress, string subMask)

  {

   return SetIpAddress( new [] { ipAddress }, new [] { subMask }, null , null );

 

  }

 

 

  /// <summary>

  /// 设置IP网关

  /// </summary>

  public bool SetGetWayAddress( string getWay)

  {

   return SetIpAddress( null , null , new [] { getWay }, null );

 

  }

(12).设置主,备份DNS地址

/// <summary>

/// 设置主,备份DNS地址

/// </summary>

public bool SetDnsAddress( string dnsMain, string dnsBackup)

{

  string [] dnsArray;

  if ( string .IsNullOrEmpty(dnsBackup))

  {

   dnsArray = new [] { dnsMain };

  }

  else

  {

   dnsArray = new [] { dnsMain, dnsBackup };

  }

  return SetIpAddress( null , null , null , dnsArray);

 

}

(13).得到IPV4地址

/// <summary>

/// 得到IPV4地址

/// </summary>

/// <returns></returns>

private UnicastIPAddressInformation GetAddress()

{

  if (IpAddresses == null || IpAddresses.Count <= 0) return null ;

  switch (IpAddresses.Count)

  {

   case 3:

    return IpAddresses[2];

   case 2:

    return IpAddresses[1];

  }

  return IpAddresses[0];

}

(14).检查设置IP地址,如果返回空,表示检查通过,为了方便返回就字符串了

/// <summary>

/// 检查设置IP地址,如果返回空,表示检查通过,为了方便返回就字符串了,没用枚举了

/// </summary>

/// <param name="ipAddress"></param>

/// <param name="subMask"></param>

/// <param name="getWay"></param>

/// <param name="dnsMain"></param>

/// <param name="dnsBackup"></param>

/// <returns></returns>

public string IsIPAddress( string ipAddress, string subMask, string getWay, string dnsMain, string dnsBackup)

{

  if (! string .IsNullOrEmpty(ipAddress))

  {

   if (!IsIPAddress(ipAddress)) return "IP地址格式不对" ;

  }

  if (! string .IsNullOrEmpty(subMask))

  {

   if (!IsIPAddress(subMask)) return "子网掩码格式不对" ;

  }

  if (! string .IsNullOrEmpty(getWay))

  {

   if (!IsIPAddress(getWay)) return "网关地址格式不对" ;

  }

  if (! string .IsNullOrEmpty(dnsMain))

  {

   if (!IsIPAddress(dnsMain)) return "主DNS地址格式不对" ;

  }

  if ( string .IsNullOrEmpty(dnsBackup)) return "" ;

  return !IsIPAddress(dnsBackup) ? "备用DNS地址格式不对" : "" ;

}

(15).设置IP地址

/// <summary>

/// 设置IP地址

/// </summary>

/// <param name="ip"></param>

/// <param name="submask"></param>

/// <param name="getway"></param>

/// <param name="dns"></param>

private bool SetIpAddress(IEnumerable ip, IEnumerable submask, IEnumerable getway, IEnumerable dns)

{

  var wmi = new ManagementClass( "Win32_NetworkAdapterConfiguration" );

  var moc = wmi.GetInstances();

  foreach (var o in moc)

  {

   var mo = (ManagementObject) o;

   if (!( bool )mo[ "IPEnabled" ])

    continue ;

   if (NetworkInterfaceId != mo[ "SettingID" ].ToString()) continue ;

   ManagementBaseObject inPar;

   ManagementBaseObject outPar;

   string str = null ;

   if (ip != null && submask != null )

   {

    inPar = mo.GetMethodParameters( "EnableStatic" );

    inPar[ "IPAddress" ] = ip;

    inPar[ "SubnetMask" ] = submask;

    outPar = mo.InvokeMethod( "EnableStatic" , inPar, null );

    if (outPar != null ) str = outPar[ "returnvalue" ].ToString();

    return (str== "0" ||str== "1" );

    //获取操作设置IP的返回值, 可根据返回值去确认IP是否设置成功。 0或1表示成功

   }

   if (getway!= null )

   {

    inPar = mo.GetMethodParameters( "SetGateways" );

    inPar[ "DefaultIPGateway" ] = getway;

    outPar = mo.InvokeMethod( "SetGateways" , inPar, null );

    if (outPar != null ) str = outPar[ "returnvalue" ].ToString();

    return (str == "0" || str == "1" );

   }

   if (dns == null ) continue ;

   inPar = mo.GetMethodParameters( "SetDNSServerSearchOrder" );

   inPar[ "DNSServerSearchOrder" ] = dns;

   outPar = mo.InvokeMethod( "SetDNSServerSearchOrder" , inPar, null );

   if (outPar != null ) str = outPar[ "returnvalue" ].ToString();

   return (str == "0" || str == "1" );

  }

  return false ;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

dy("nrwz");

查看更多关于C#网络适配器简单操作的详细内容...

  阅读:42次