C#网络适配器简单操作

2019-12-30 14:26:24王冬梅

(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;
  }