C#

C# 사설 / 공인 IP 구하기 ( Internal / External IP Address )

saltdoll 2018. 4. 20. 06:02
반응형

네트웍에서 사설/공인 IP (Local/Public IP 또는 Internal/External IP)를 구하는 소스



Get Internal IP Address 

using System.Net.Sockets; //for AddressFamily 


public static string GetInternalIPAddress()
{
    var host = Dns.GetHostEntry(Dns.GetHostName());

    foreach (var ip in host.AddressList)
    {
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
    return ip.ToString();
}
    }

    throw new Exception("No network adapters with an IPv4 address in the system!");
}

https://stackoverflow.com/questions/6803073/get-local-ip-address



Get External IP Address

public static string GetExternalIPAddress()
{
    string externalip = new WebClient().DownloadString("http://ipinfo.io/ip").Trim(); //http://icanhazip.com

    if (String.IsNullOrWhiteSpace(externalip))
    {
externalip = GetInternalIPAddress();//null경우 Get Internal IP를 가져오게 한다.
    }

    return externalip;
}

Trim()를 사용하는 이유는 \n과 같은 값이 넘어오기에 Trim()를 사용했습니다.

(예: 8.8.8.8\n 이 넘어온다. Trim() 8.8.8.8로 만든다.)



반응형