中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在c# 中對網絡信息進行設置

發布時間:2021-03-19 15:16:45 來源:億速云 閱讀:135 作者:Leah 欄目:開發技術

怎么在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;
  }

看完上述內容,你們掌握怎么在c# 中對網絡信息進行設置的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巨野县| 栖霞市| 甘泉县| 仁布县| 剑川县| 昌邑市| 郧西县| 二连浩特市| 卢龙县| 潜江市| 清水河县| 黑水县| 金寨县| 西吉县| 内乡县| 元阳县| 翁牛特旗| 贵溪市| 西平县| 隆德县| 白银市| 连山| 霍城县| 格尔木市| 沽源县| 玉门市| 凤冈县| 阳新县| 屏山县| 光山县| 铁岭市| 苏州市| 田东县| 基隆市| 烟台市| 彝良县| 奇台县| 仪陇县| 栖霞市| 南江县| 方城县|