一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C#網絡適配器簡單操作

C#網絡適配器簡單操作

2021-12-08 13:18彭澤0902 C#

這篇文章主要介紹了C#網絡適配器簡單操作,提供多種相關的輔助方法類,感興趣的小伙伴們可以參考一下

網絡的相關設置在項目開發中有較多的應用,有時候需要在項目中對網絡信息進行相關設置。

現在提供提供幾種相關的輔助方法類。

(1).IP地址

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/// <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).網關地址

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/// <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服務器地址

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/// <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地址

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/// <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地址

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/// <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地址

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/// <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).子網掩碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/// <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).屬性

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/// <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地址

?
1
2
3
4
5
6
7
8
9
10
11
/// <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服務

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/// <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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/// <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地址

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/// <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地址

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/// <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地址,如果返回空,表示檢查通過,為了方便返回就字符串了

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/// <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地址

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/// <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#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
主站蜘蛛池模板: 天天操婷婷 | 精品成人一区二区 | 日本成人黄色网址 | 亚洲444777KKK在线观看 | 日韩日韩日韩手机看片自拍 | 好大用力深一点女公交车 | 欧美老人与小伙子性生交 | 久久精品国产亚洲AV天美18 | 九九精品视频在线观看 | jj免费视频 | 亚洲第9页 | 动漫美女人物被黄漫在线看 | 日本视频在线免费播放 | 日韩毛片在线视频 | 污污在线免费观看 | 欧美日韩亚洲综合久久久 | 日本亚洲免费 | 青春草视频在线免费观看 | 成人中文字幕在线观看 | 毛片大全高清免费 | 免费黄色片网站 | 天堂樱桃bt在线www | 精油按摩日本 | 大陆国产vs国产对白 | 国产成人99久久亚洲综合精品 | 日本网 | 日本免费在线 | 天美蜜桃精东乌鸦传媒 | 日韩亚洲一区中文字幕在线 | 青青青手机视频 | 日韩欧美一区二区不卡 | 成人精品在线 | ady久久 | 呜嗯啊野战h呻吟男男双性 污小说在线阅读 | 丝袜白浆 | 亚洲va精品中文字幕 | 午夜欧美精品久久久久久久久 | 秋霞一级成人欧美理论 | 加勒比福利 | www.成人在线视频 | 男人操女人免费视频 |