Realman's World

[C#] 비스타에서 ipv4 읽어오기 본문

Language/C#

[C#] 비스타에서 ipv4 읽어오기

리얼맨 2008. 11. 27. 16:47
현재 로컬의 IP를 받아 올 때 일반적으로 아래와 같이 받아온다.

IPHostEntry senderIP = Dns.GetHostEntry(Dns.GetHostName());
string sClientIp = senderIP.AddressList[0].ToString();

하지만 위와 같은 방식으로 했을 경우 비스타에서는 ipv6로 IP를 받아오게 된다.

때문에 원하는 Socket 통신을 할 때 ipv4로 동작하는 PC와는 연동이 되지 않는다.

이를 해결하기 위해 IP를 ipv4로 받아오기 위해서 아래와 같이 코딩하면 된다.

string sClientIp = String.Empty;
            IPHostEntry senderIP = Dns.GetHostEntry(Dns.GetHostName());
            for (int i = 0; i < senderIP.AddressList.Length; i++)
            {
                if (senderIP.AddressList[i].AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                {
                    sClientIp = senderIP.AddressList[i].ToString();
                    break;
                }
            }

Comments