2009-06-30 5 views
0

Etant donné une adresse IPv4 sous forme de chaîne (par exemple "10.171.24.69") et un masque de réseau (par exemple "255.255.255.128" ou "25" pour le nombre de bits dans la partie réseau) j'ai besoin de calculer la diffusion adresse, qui peut être en mettant à zéro ou un-ing les bits dans la partie hôte (en fonction de la propriété IPUseZeroBroadcast que je peux interroger via WMI).Fonctions pour manipuler les adresses IPv4 en C#?

J'examine la classe System.Net.IPAddress mais elle semble insuffisante pour la tâche. Aucune suggestion?

Répondre

3

Je ne sais pas de tout intégré, des fonctions, mais vous pouvez calculer vous-même assez facilement

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

Vous pouvez également faire

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

mais la .Address propriété est obsolète.

Notez que pour convertir une chaîne du type "1.2.3.4" en IPAddress, vous pouvez appeler le IPAddress.Parse, par ex.

IPAddress foo = IPAddress.Parse("1.2.3.4"); 
Questions connexes