您的位置:首页 > 其它

.Net获取局域网中可以ping通的IP列表

2009-11-23 10:07 232 查看
原方法:

先获取本机IP,然后逐个ping.

array<IPAddress^>^ aryIPS = Dns::GetHostAddresses(Dns::GetHostName());

String^ strIPGroup = aryIPS[aryIPS->Length - 1]->ToString()->Substring(0, aryIPS[aryIPS->Length - 1]->ToString()->LastIndexOf("."));

问题:

对于IPv6和有虚拟网卡的电脑无效.

解决办法:

获取本机网关,再逐个ping.

获取网关的方法:

String^ strIPGroup = ""; // 网关前三位 如192.168.1

ManagementClass^ mc= gcnew ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection^ nics= mc->GetInstances();
ManagementObjectCollection::ManagementObjectEnumerator^ ie = nics->GetEnumerator();
while (ie->MoveNext()) {
ManagementObject^ mo = (ManagementObject^)ie->Current;
if(Convert::ToBoolean(mo["ipEnabled"])){
String^ strIP = ((array<String^>^)mo["DefaultIPGateway"])[0];
strIPGroup = strIP->Substring(0, strIP->LastIndexOf("."));
break;
//Console.WriteLine((nic["DefaultIPGateway"])[0]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: