hasta ahora tengo este código:cómo determinar si una dirección IP es privada?
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);
}
}
Cómo puedo filtrar las direcciones IP privadas, así? De la misma manera que estoy filtrando las direcciones IP de bucle invertido.
Posiblemente más fácil convertir a uint32 y luego usar operaciones bit a bit: '((dirección y 0xFF000000U) == 0x0A000000U) || ... '. Si hay una gran cantidad de direcciones para verificar, también debería ser más rápido. – Richard
Sospecho que esto funcionará, pero las expresiones regulares son conceptualmente la herramienta incorrecta para probar si los enteros pequeños están en el rango correcto. Comparar números será mucho más eficiente que emparejar cadenas. – Anthony
Convierta la IP actual a la representación numérica y luego vea si encaja en cualquiera de esas clases (use solo la comparación numérica). Funciona perfectamente para mí. – Edi