2009-06-30 16 views
0

Angesichts einer IPv4-Adresse in Form einer Zeichenfolge (zB "10.171.24.69") und einer Netzmaske (zB "255.255.255.128" oder "25" für die Anzahl der Bits im Netzwerkteil) muss ich den Broadcast berechnen Adresse, die entweder durch das Nullen oder Eingeben der Bits in dem Host-Teil (abhängig von der IPUseZeroBroadcast-Eigenschaft, die ich über WMI abfragen kann) sein kann.Funktionen zum Bearbeiten von IPv4-Adressen in C#?

Ich untersuche die System.Net.IPAddress-Klasse, aber es scheint nicht ausreichend für die Aufgabe. Irgendwelche Vorschläge?

Antwort

3

Ich weiß nicht, von jeder eingebauten Funktionen, aber man konnte es sich leicht genug berechnen

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); 
} 

Sie auch

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

aber die .Address Eigenschaft ist veraltet.

Beachten Sie, dass zum Konvertieren einer Zeichenfolge wie "1.2.3.4" in IPAddress, IPAddress.Parse, z.

IPAddress foo = IPAddress.Parse("1.2.3.4"); 
Verwandte Themen