Finora ho questo codice:come determinare se un indirizzo IP in privato?
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in adapters)
{
IPInterfaceProperties properties = adapter.GetIPProperties();
foreach (IPAddressInformation uniCast in properties.UnicastAddresses)
{
// Ignore loop-back addresses & IPv6
if (!IPAddress.IsLoopback(uniCast.Address) &&
uniCast.Address.AddressFamily!= AddressFamily.InterNetworkV6)
Addresses.Add(uniCast.Address);
}
}
Come faccio a filtrare gli indirizzi IP privati come bene? Allo stesso modo sto filtrando gli indirizzi IP di loopback.
Forse più facile da convertire in Uint32 e quindi utilizzare operazioni bit per bit: '((indirizzi e 0xFF000000U) == 0x0A000000U) || ... '. Se ci sono molti indirizzi da controllare, dovrebbe anche essere più veloce. – Richard
Sospetto che ciò funzionerà, ma le espressioni regolari sono concettualmente lo strumento sbagliato per testare se gli interi piccoli sono nel range corretto. Confrontando i numeri sarà molto più efficiente rispetto alle stringhe corrispondenti. – Anthony
Converti l'IP corrente nella rappresentazione numerica e poi guarda se rientra in una qualsiasi di queste classi (usa solo il confronto numerico). Funziona perfettamente per me. – Edi