C# 获取本机所有IP、默认网关、子网掩码
2013-08-11 19:51
447 查看
对几个IP地址集合的定义:
privateList<IPAddress>_localAddressFamily = new List<IPAddress>();//本机IP地址集合
privateList<IPAddress>_subNetAddressFamily = new List<IPAddress>();//子网掩码集合
privateList<IPAddress>_defaultIPGateway = new List<IPAddress>();// 默认网关集合
privateList<IPAddress> _broadcastFamily= new List<IPAddress>();//广播地址
比较简单的方式是借助C#已封装好的类来进行操作:
this._hostName = Dns.GetHostName();
IPHostEntry ipHostEntry=Dns.GetHostByName(this._hostName);
this._localAddressFamily.AddRange(ipHostEntry.AddressList);
// 至此 ipHostEntry.AddressList就是IP地址的集合
NetworkInterface[] adapters=NetworkInterface.GetAllNetworkInterfaces();
// 至此 adapters保存了本机所有的网卡适配器信息
NetworkInterface属性如下:
foreach (NetworkInterface ni in adapters) {
IPInterfaceProperties ipProperties =ni.GetIPProperties();
UnicastIPAddressInformation curIP =ipProperties.UnicastAddresses[0];
this._localAddressFamily.Add(curIP.Address);// 添加IP地址
this._subNetAddressFamily.Add(curIP.IPv4Mask);// 添加子网掩码
this._defaultIPGateway.Add(ipProperties.GatewayAddresses[0].Address);//添加默认网关
}
//============================我 是 分 割 线 =============================================
另外,还可以通过WMI来获得需要的信息
ManagementClass mc = newManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection nics =mc.GetInstances();
foreach (ManagementObject nic in nics) {
if(Convert.ToBoolean(nic["ipEnabled"]) == true) {
Array ips = nic["IPAddress"] as String[];
Array subnets = nic["IPSubnet"] as String[];
Array gateways =nic["DefaultIPGateway"] as String[];
IPAddress curIP, curSubnet, curGateway;
if (ips != null && ips.Length > 0) {
curIP = IPAddress.Parse(ips.GetValue(ips.Length - 1));
this._localAddressFamily.Add(curIP);
}
if (subnets != null && subnets.Length > 0) {
curSubnet = IPAddress.Parse(subnets.GetValue(0));
this._subNetAddressFamily.Add(curSubnet);
}
if (gateways != null && gateways.Length > 0) {
curGateway =IPAddress.Parse(gateways.GetValue(0));
this._defaultIPGateway.Add(curGateway);
}
if (curIP != null && curSubnet != null) {
byte[] IPAddressByte = curIP.GetAddressBytes();
byte[] IPSubnetByte = curSubnet.GetAddressBytes();
StringBuilder broadcast = new StringBuilder();
for (int i = 0; i < 4; i++) {
broadcast.Append(IPAddressByte[i] | (~IPSubnetByte[i] & 255));
if (i != 3) {
broadcast.Append(".");
}
}
this._broadcastFamily.Add(IPAddress.Parse(broadcast.ToString()));
}
}
}
privateList<IPAddress>_localAddressFamily = new List<IPAddress>();//本机IP地址集合
privateList<IPAddress>_subNetAddressFamily = new List<IPAddress>();//子网掩码集合
privateList<IPAddress>_defaultIPGateway = new List<IPAddress>();// 默认网关集合
privateList<IPAddress> _broadcastFamily= new List<IPAddress>();//广播地址
比较简单的方式是借助C#已封装好的类来进行操作:
this._hostName = Dns.GetHostName();
IPHostEntry ipHostEntry=Dns.GetHostByName(this._hostName);
this._localAddressFamily.AddRange(ipHostEntry.AddressList);
// 至此 ipHostEntry.AddressList就是IP地址的集合
NetworkInterface[] adapters=NetworkInterface.GetAllNetworkInterfaces();
// 至此 adapters保存了本机所有的网卡适配器信息
NetworkInterface属性如下:
foreach (NetworkInterface ni in adapters) {
IPInterfaceProperties ipProperties =ni.GetIPProperties();
UnicastIPAddressInformation curIP =ipProperties.UnicastAddresses[0];
this._localAddressFamily.Add(curIP.Address);// 添加IP地址
this._subNetAddressFamily.Add(curIP.IPv4Mask);// 添加子网掩码
this._defaultIPGateway.Add(ipProperties.GatewayAddresses[0].Address);//添加默认网关
}
//============================我 是 分 割 线 =============================================
另外,还可以通过WMI来获得需要的信息
ManagementClass mc = newManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection nics =mc.GetInstances();
foreach (ManagementObject nic in nics) {
if(Convert.ToBoolean(nic["ipEnabled"]) == true) {
Array ips = nic["IPAddress"] as String[];
Array subnets = nic["IPSubnet"] as String[];
Array gateways =nic["DefaultIPGateway"] as String[];
IPAddress curIP, curSubnet, curGateway;
if (ips != null && ips.Length > 0) {
curIP = IPAddress.Parse(ips.GetValue(ips.Length - 1));
this._localAddressFamily.Add(curIP);
}
if (subnets != null && subnets.Length > 0) {
curSubnet = IPAddress.Parse(subnets.GetValue(0));
this._subNetAddressFamily.Add(curSubnet);
}
if (gateways != null && gateways.Length > 0) {
curGateway =IPAddress.Parse(gateways.GetValue(0));
this._defaultIPGateway.Add(curGateway);
}
if (curIP != null && curSubnet != null) {
byte[] IPAddressByte = curIP.GetAddressBytes();
byte[] IPSubnetByte = curSubnet.GetAddressBytes();
StringBuilder broadcast = new StringBuilder();
for (int i = 0; i < 4; i++) {
broadcast.Append(IPAddressByte[i] | (~IPSubnetByte[i] & 255));
if (i != 3) {
broadcast.Append(".");
}
}
this._broadcastFamily.Add(IPAddress.Parse(broadcast.ToString()));
}
}
}
相关文章推荐
- 获取本机的所有IP,子网掩码(subnet mask)和默认网关
- 获取本机的所有IP,子网掩码(subnet mask)和默认网关
- c#获取本地连接的ip 子网掩码 网关 DNS
- 使用WMI控制网络适配器的类(获取所有启用的网络适配器及其信息。设置IP、子网掩码,网关,DNS)
- 获取wifi的ip,子网掩码,网关,dns之类的信息
- c#获取网关和Ip
- C# 更改IP,子网掩码,网关,DNS
- shell 获取网卡IP地址 子网掩码 默认网关 广播地址 MAC地址
- c# 获取所有网卡的信息(IP。MAC)
- C#设置本地网络如DNS、网关、子网掩码、IP等等
- c#获取本机所有ip
- IP,子网掩码,默认网关,DNS服务器
- C# 更改IP,子网掩码,网关,DNS
- C#设置DNS、网关、子网掩码、IP
- 获取当前可使用的网卡并检查网卡设置(网卡的IP,网关,子网掩码,DNS,备用DNS信息)
- IP,子网掩码,默认网关和DNS都是什么,有什么用
- C# 获取IPV4地址,网关,子网掩码,网卡信息的方法
- 获取并修改本机的ip,网关,dns,子网掩码等信息
- C#获取局域网内所有的ip及对应的MAC