Obtener IP local en C# en UWP

publicado por: Anonymous

¿Cómo se puede obtener la ip del dispositivo en C#?
Que funcione en el ámbito de las UWP (Universal Windows Plataform) conocidas como aplicaciones universales de windows10

solución

Debes preguntar por el perfil de conexión a internet, luego verificar cual es el adaptador de red actual que coincide con el perfil.

Ten en cuenta que debes validar muchas cosas, como si existen o no dispositivos, o si existe más de uno. Incluso puede existir el dispositivo pero sino estas conectado a una red. Etc.

Utiliza este método para encontrar la IP local que ya tiene todo implementado.

    private string GetLocalIp()
    {
        var icp = NetworkInformation.GetInternetConnectionProfile();

        //sino hay disp de red devuelve null
        if (icp?.NetworkAdapter == null) return null;

        var hostname = (from hn in NetworkInformation.GetHostNames()
                       where hn.IPInformation?.NetworkAdapter != null
                          && hn.IPInformation.NetworkAdapter.NetworkAdapterId
                          == icp.NetworkAdapter.NetworkAdapterId
                       select hn).First();


        return hostname?.CanonicalName;
    }

Con este otro método (abajo) puedes hallar la dirección con la que sale a internet, la cual no es la misma IP local . NetworkInformation.GetHostNames() devuelve una lista de interfaces algunas con IP, en todo caso el orden de estas interfaces es .

  • IP
    • Interfaces sin IP
    • Interfaces con IP
  • Tipo de red
    • Externas
    • Locales

por lo que este método retorna con la primera interfaz con IP externa.

    private string GetIp()
    {
        string ip = string.Empty;

        var ll = NetworkInformation.GetHostNames().ToList();

        foreach (HostName localHostName in NetworkInformation.GetHostNames())
        {
            if (localHostName.IPInformation != null)
            {
                if (localHostName.Type == HostNameType.Ipv4)
                {
                    ip = localHostName.ToString();
                    break;
                }
            }
        }

        return ip;
    }
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *