첨부 소스 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

▶ 네트워크 주소 구하기 예제

using System;
using System.Net;

IPAddress ipAddress = GetNetworkAddress(16);

Console.WriteLine("네트워크 주소 : " + ipAddress.ToString());

/*
네트워크 주소 : 255.255.0.0
*/

 

728x90

 

▶ 네트워크 주소 구하기

using System;
using System.Net;

#region 네트워크 주소 구하기 - GetNetworkAddress(hostAddressBitCount)

/// <summary>
/// 네트워크 주소 구하기
/// </summary>
/// <param name="hostAddressBitCount">호스트 주소 비트 수</param>
/// <returns>네트워크 주소</returns>
public static IPAddress GetNetworkAddress(int hostAddressBitCount)
{
    int networkPartLength = 32 - hostAddressBitCount;

    if(networkPartLength < 2)
    {
        throw new ArgumentException("IP 버전 4를 위한 호스트 수가 너무 큽니다.");
    }

    byte[] binaryMaskByteArray = new byte[4];

    for(int i = 0; i < 4; i++)
    {
        if(i * 8 + 8 <= networkPartLength)
        {
            binaryMaskByteArray[i] = (byte)255;
        }
        else if(i * 8 > networkPartLength)
        {
            binaryMaskByteArray[i] = (byte)0;
        }
        else
        {
            int oneLength = networkPartLength - i * 8;

            string binaryDigit = string.Empty.PadLeft(oneLength, '1').PadRight(8, '0');

            binaryMaskByteArray[i] = Convert.ToByte(binaryDigit, 2);
        }
    }

    return new IPAddress(binaryMaskByteArray);
}

#endregion
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요