Я обновил код "Jason Heine" (не знаю, как пометить имя) до c ++. теперь это должно работать. Кстати, спасибо ему.
Вот что я получаю:
using namespace System;
using namespace System::Net;
void main(){
String ^strHostName = String::Empty;
// Getting Ip address of local machine...
// First get the host name of local machine.
strHostName = Dns::GetHostName();
Console::WriteLine("Local Machine's Host Name: " + strHostName);
// Then using host name, get the IP address list..
IPHostEntry^ ipEntry = Dns::GetHostEntry(strHostName);
array<IPAddress^> ^addr = ipEntry->AddressList;
for (int i = 0; i < addr->Length; i++)
{
Console::WriteLine("IP Address {0}: {1} ", i, addr[i]->ToString());
}
Console::ReadKey();
}
Надеюсь, это поможет вам.
Протестировано На моем ПК с Wi-Fi и LAN-соединением и несколькими виртуальными автомобилями для «VMware Player», и я получаю 4 IPv6, а затем 4 IPv4. если вам нужен только IPv4, вы можете использовать:
using namespace System;
using namespace System::Net;
void main(){
String ^strHostName = String::Empty;
// Getting Ip address of local machine...
// First get the host name of local machine.
strHostName = Dns::GetHostName();
Console::WriteLine("Local Machine's Host Name: " + strHostName);
// Then using host name, get the IP address list..
IPHostEntry^ ipEntry = Dns::GetHostEntry(strHostName);
array<IPAddress^> ^addr = ipEntry->AddressList;
for (int i = 0; i < addr->Length; i++)
{
if(addr[i]->ToString()->Length < 20){
Console::WriteLine("IP Address {0}: {1} ", i, addr[i]->ToString());
}
}
Console::ReadKey();
}
Тогда я получаю только IPv4. просто цифры начинаются с 4. Но для меня это нормально. Вы можете добавить новую переменную для пересчета нумерации:)