C#网络适配器简单操作
网络的相关设置在项目开发中有较多的应用,有时候需要在项目中对网络信息进行相关设置。
现在提供提供几种相关的辅助方法类。
(1).IP地址
///<summary> ///IP地址 ///</summary> publicstringIpAddress { get { stringipAddress; varaddress=GetAddress(); if(address==null) { ipAddress=string.Empty; } else { ipAddress=address.Address.ToString(); } returnipAddress; } set{if(value==null)thrownewArgumentNullException(nameof(value));} }
(2).网关地址
///<summary> ///网关地址 ///</summary> publicstringGetway { get { stringgetway; if(Getwaryes!=null&&Getwaryes.Count>0) { getway=Getwaryes[0].Address.ToString()=="0.0.0.0"?"":Getwaryes[0].Address.ToString(); } else { getway=string.Empty; } returngetway; } set{if(value==null)thrownewArgumentNullException(nameof(value));} }
(3).DHCP服务器地址
///<summary> ///DHCP服务器地址 ///</summary> publicstringDhcpServer { get { stringdhcpServer; if(DhcpServerAddresses!=null&&DhcpServerAddresses.Count>0) { dhcpServer=DhcpServerAddresses[0].ToString(); } else { dhcpServer=string.Empty; } returndhcpServer; } set{if(value==null)thrownewArgumentNullException(nameof(value));} }
(4).MAC地址
///<summary> ///MAC地址 ///</summary> publicstringMacAddres { get { stringmacAddress; if(MacAddress==null) macAddress=string.Empty; elseif(MacAddress.ToString().Length==12) { macAddress=MacAddress.ToString().Insert(4,"-").Insert(9,"-"); } else { macAddress=MacAddress.ToString(); } returnmacAddress; } set{if(value==null)thrownewArgumentNullException(nameof(value));} }
(5).主DNS地址
///<summary> ///主DNS地址 ///</summary> publicstringDnsMain { get { vardnsMain=string.Empty; if(DnsAddresses.Count>0) { if(IsIPAddress(DnsAddresses[0].ToString())) { dnsMain=DnsAddresses[0].ToString(); } } else { dnsMain=string.Empty; } returndnsMain; } set{if(value==null)thrownewArgumentNullException(nameof(value));} }
(6).备用DNS地址
///<summary> ///备用DNS地址 ///</summary> publicstringDnsBackup { get { vardnsBackup=string.Empty; if(DnsAddresses.Count>1) { if(IsIPAddress(DnsAddresses[1].ToString())) { dnsBackup=DnsAddresses[1].ToString(); } } else { dnsBackup=string.Empty; } returndnsBackup; } set{if(value==null)thrownewArgumentNullException(nameof(value));} }
(7).子网掩码
///<summary> ///子网掩码 ///</summary> publicstringMask { get { stringmask; varaddress=GetAddress(); if(address==null) { mask=""; } else { if(address.IPv4Mask!=null) { mask=address.IPv4Mask.ToString(); } else { mask="255.255.255.0"; } } returnmask; } set{if(value==null)thrownewArgumentNullException(nameof(value));} }
(8).属性
///<summary> ///DNS集合 ///</summary> publicIPAddressCollectionDnsAddresses{get;set;} ///<summary> ///网关地址集合 ///</summary> publicGatewayIPAddressInformationCollectionGetwaryes{get;set;} ///<summary> ///IP地址集合 ///</summary> publicUnicastIPAddressInformationCollectionIpAddresses{get;set;} ///<summary> ///DHCP地址集合 ///</summary> publicIPAddressCollectionDhcpServerAddresses{get;set;} ///<summary> ///网卡MAC地址 ///</summary> publicPhysicalAddressMacAddress{get;set;} ///<summary> ///是否启用DHCP服务 ///</summary> publicboolIsDhcpEnabled{get;set;} ///<summary> ///描述信息 ///</summary> publicstringDescription{get;set;} ///<summary> ///网络接口类型 ///</summary> ///<returns></returns> publicstringNetworkInterfaceType{get;set;} ///<summary> ///速度 ///</summary> publicstringSpeed{get;set;}
(9).是否是IP地址
///<summary> ///是否是IP地址 ///</summary> ///<paramname="ipAddress"></param> ///<returns></returns> publicboolIsIPAddress(stringipAddress) { conststringregexStr=@"^(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])$"; varregex=System.Text.RegularExpressions.Regex.Match(ipAddress,regexStr); returnregex.Success; }
(10).启用DHCP服务
///<summary> ///启用DHCP服务 ///</summary> publicboolEnableDhcp() { varwmi=newManagementClass("Win32_NetworkAdapterConfiguration"); varmoc=wmi.GetInstances(); foreach(varoinmoc) { varmo=(ManagementObject)o; if(!(bool)mo["IPEnabled"]) continue; if(mo["SettingID"].ToString()!=NetworkInterfaceId)continue; mo.InvokeMethod("SetDNSServerSearchOrder",null); mo.InvokeMethod("EnableDHCP",null); } //查询现适配器接口信息 varnetworkAdapter=newNetworkAdapterUtil().GetNeworkAdapterByNetworkInterfaceId(NetworkInterfaceId); returnnetworkAdapter!=null&&networkAdapter.IsDhcpEnabled; }
(11).设置IP地址,子网掩码,网关,DNS
///<summary> ///设置IP地址,子网掩码,网关,DNS, ///</summary> publicboolSetIpAddressSubMaskDnsGetway(stringipAddress,stringsubMask,stringgetWay,stringdnsMain,stringdnsBackup) { string[]dnsArray; if(string.IsNullOrEmpty(dnsBackup)) { dnsArray=new[]{dnsMain}; } else { dnsArray=new[]{dnsMain,dnsBackup}; } returnSetIpAddress(new[]{ipAddress},new[]{subMask},new[]{getWay},dnsArray); } ///<summary> ///设置IP地址和子网掩码 ///</summary> publicboolSetIpAddressAndSubMask(stringipAddress,stringsubMask) { returnSetIpAddress(new[]{ipAddress},new[]{subMask},null,null); } ///<summary> ///设置IP网关 ///</summary> publicboolSetGetWayAddress(stringgetWay) { returnSetIpAddress(null,null,new[]{getWay},null); }
(12).设置主,备份DNS地址
///<summary> ///设置主,备份DNS地址 ///</summary> publicboolSetDnsAddress(stringdnsMain,stringdnsBackup) { string[]dnsArray; if(string.IsNullOrEmpty(dnsBackup)) { dnsArray=new[]{dnsMain}; } else { dnsArray=new[]{dnsMain,dnsBackup}; } returnSetIpAddress(null,null,null,dnsArray); }
(13).得到IPV4地址
///<summary> ///得到IPV4地址 ///</summary> ///<returns></returns> privateUnicastIPAddressInformationGetAddress() { if(IpAddresses==null||IpAddresses.Count<=0)returnnull; switch(IpAddresses.Count) { case3: returnIpAddresses[2]; case2: returnIpAddresses[1]; } returnIpAddresses[0]; }
(14).检查设置IP地址,如果返回空,表示检查通过,为了方便返回就字符串了
///<summary> ///检查设置IP地址,如果返回空,表示检查通过,为了方便返回就字符串了,没用枚举了 ///</summary> ///<paramname="ipAddress"></param> ///<paramname="subMask"></param> ///<paramname="getWay"></param> ///<paramname="dnsMain"></param> ///<paramname="dnsBackup"></param> ///<returns></returns> publicstringIsIPAddress(stringipAddress,stringsubMask,stringgetWay,stringdnsMain,stringdnsBackup) { 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> ///<paramname="ip"></param> ///<paramname="submask"></param> ///<paramname="getway"></param> ///<paramname="dns"></param> privateboolSetIpAddress(IEnumerableip,IEnumerablesubmask,IEnumerablegetway,IEnumerabledns) { varwmi=newManagementClass("Win32_NetworkAdapterConfiguration"); varmoc=wmi.GetInstances(); foreach(varoinmoc) { varmo=(ManagementObject)o; if(!(bool)mo["IPEnabled"]) continue; if(NetworkInterfaceId!=mo["SettingID"].ToString())continue; ManagementBaseObjectinPar; ManagementBaseObjectoutPar; stringstr=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"); } returnfalse; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。