2009-06-30 3 views
0

IPv4 주소가 문자열 (예 : "10.171.24.69") 및 넷 마스크 (예 : "255.255.255.128"또는 네트워크 부분의 비트 수에 대해 "25")로 주어지면 브로드 캐스트를 계산해야합니다 주소는 호스트 파트의 비트를 0으로 설정하거나 1로 설정하는 것일 수 있습니다 (WMI를 통해 쿼리 할 수있는 IPUseZeroBroadcast 속성에 따라 다름).C#에서 IPv4 주소를 조작하는 기능?

System.Net.IPAddress 클래스를 검사 중이지만 작업이 불충분 해 보입니다. 어떤 제안?

답변

3

나는 기능, 내장 어떤 알고하지 않습니다,하지만 당신은 자신에게 그것을 충분히 쉽게를 계산할 수 또한

IPAddress broadcast = new IPAddress((ip.Address | (~mask.Address)) & 0xffffffff); 

할 수

static IPAddress ComputeBroadcastIP(IPAddress ip, IPAddress netmask) 
{ 
    byte[] ipBytes = ip.GetAddressBytes(); 
    byte[] maskBytes = netmask.GetAddressBytes(); 
    byte[] broadcastBytes = new byte[ipBytes.Length]; 

    for (int i = 0; i < broadcastBytes.Length; i++) 
    { 
     broadcastBytes[i] = (byte)(ipBytes[i] | ~maskBytes[i]); 
    } 

    return new IPAddress(broadcastBytes); 
} 

하지만 .Address 속성은 사용되지 않습니다.

"1.2.3.4"와 같은 문자열을 IPAddress으로 변환하려면 IPAddress.Parse을 호출 할 수 있습니다.

IPAddress foo = IPAddress.Parse("1.2.3.4"); 
관련 문제