网络的相关设置在项目开发中有较多的应用,有时候需要在项目中对网络信息进行相关设置。
现在提供提供几种相关的辅助方法类。
(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 ; } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。