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;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。