정리예정/미분류

[C#] IPv6 에서 IPv4 출력으로 변환

whereareyoung 2023. 9. 25. 10:44

< IPv6 형태로 출력되는 기존의 코드 >

    void Awake()
    {
        string hostname = Dns.GetHostName();
        IPAddress[] adrList = Dns.GetHostAddresses(hostname);
    }

으로 IP주소를 출력하였을 경우 다음과 같이 IPv6 형태로 출력되는데, 

Dns.GetHostAddresses(hostname) 가 host 가 IPv6를 지원하는 경우에 이것을 같이 반환하기 때문이다.

따라서 아래와 같이 조건문을 사용해서 IPv4 주소를 선택하도록 수정해야 하는 방법을 이용해 볼 수 있다. 

 

< IPv4를 출력하도록 수정된 코드 >

    void Awake()
    {
        string hostname = Dns.GetHostName();
        IPAddress[] adrList = Dns.GetHostAddresses(hostname);

        foreach (IPAddress addr in adrList)
        {
            if (addr.AddressFamily == AddressFamily.InterNetwork)
            {
                serverAddress = addr.ToString();
                break;
            }
        }

* foreach 를 통해 IPv4 주소를 선택하고 문자열로 변환하였다. 그 안의 조건문에서는 첫번째 IPv4 주소를 선택하도록 하였는데, 보편적으로 경우에 첫번째 IP 주소가 해당 컴퓨터 또는 장치와 연결되어 있기 때문이다.

 

수정후 IP가 IPv4 로 정상 출력되는 것을 확인할 수 있다. 

'정리예정 > 미분류' 카테고리의 다른 글

c언어  (0) 2023.10.23
[Unity] Menu UI  (0) 2023.09.25
Visual Studio 세팅 - C언어 학습용 설정  (0) 2023.07.25
C언어  (0) 2023.07.14
Visual Studio 세팅 - 파일 구조 확인  (0) 2023.07.12