Ho una VM VirtualBox installata sulla mia macchina e come tale c'è una scheda Ethernet che appare per essa. Sto enumerare l'elenco degli indirizzi IP della mia macchina tramite il seguente:C# - Trovare l'indirizzo IP locale della mia macchina e non la VM
public string GetLocalIpAddress()
{
try
{
string strHostName = Dns.GetHostName();
// Then using host name, get the IP address list..
IPHostEntry ipEntry = Dns.GetHostEntry(strHostName);
foreach (IPAddress ip in ipEntry.AddressList)
{
if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
return string.Format("({0})", ip.ToString());
}
}
}
catch(Exception e)
{
Global.ApplicationLog.AddApplicationLog(EnumAppEventTypes.SYSTEM_ERROR, e.ToString());
}
return "";
}
mio problema è che l'adattatore ethernet della macchina virtuale cattura anche sulla condizione:
if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
c'è un modo di selezionando l'indirizzo IP locale della mia macchina e ignorando la mia macchina virtuale?
Sfortunatamente la classe IPAddress non sembra mantenere il nome dell'adattatore ethernet, quindi non posso eliminare l'adattatore Ethernet VM con tale metodo. – n00b
Sì, potrebbe essere necessario cambiare approccio utilizzando il metodo NetworkInterface.GetAllNetworkInterfaces(). Restituirà tutte le interfacce e quindi sarà possibile enumerare attraverso tutti gli indirizzi IP disponibili per ogni interfaccia. – pennanth
Hi pennanth, non riesco a trovare nessuna variabile membro che mostri l'indirizzo IP all'interno della classe NetworkInterface. Correggimi anche se ho torto ma usando il nome della classe NetworkInterface potresti romperlo rinominando i nomi degli adattatori ethernet? Sto cercando una soluzione più affidabile di quella – n00b