2012-03-30 5 views
2

Da ich ziemlich viele Windows Server-Rechner einrichten muss, habe ich beschlossen, ein kleines Programm in C# zu schreiben, um einige dieser Aufgaben zu vereinfachen. Die letzte, die ich hinzufügen muss, ist die Fähigkeit, einen IP-Bereich (z. B. 74.117.238.112/28) einzugeben und automatisch alle diese als statische IPs zur NIC hinzuzufügen.Ermitteln der IPv4-Subnetzmaske in C#

Ich habe in der Vergangenheit immer Web-Rechner dafür verwendet, aber ich versuche herauszufinden, wie es programmgesteuert in C# zu tun. Ich habe diese Aufzählung HERE gefunden, die viel Sinn macht (lernte ein bisschen davon), ist aber ein bisschen verwirrend. Die Taschenrechner, die ich in der Vergangenheit benutzt habe, haben mir Subnet-Masken wie 255.255.255.240 oder .248 gezeigt, wobei diese nur einen von vier Werten zurückgibt.

Ist dieses Codebeispiel korrekt oder muss es weiter modifiziert werden, um tatsächlich verwendbar zu sein?

Antwort

5

Der von Ihnen erwähnte Link gibt Ihnen Standard-Subnetzmasken für verschiedene IP-Klassen. Das ist nicht wirklich Subnetting.

Wenn ich Sie richtig verstehe, brauchen Sie nur die Subnetzmaske, die nur vom Subnetz abhängig ist (/ 28 in Ihrem Beispiel) und nicht die IP-Adresse.

Ich schrieb dieses kleine Funktion ::

public static string GetSubnetMask(byte subnet) 
    { 
     long mask = (0xffffffffL << (32-subnet)) & 0xffffffffL; 
     mask=IPAddress.HostToNetworkOrder((int)mask); 
     return new IPAddress((UInt32)mask).ToString(); 
    } 

Wenn Sie es mit einem Subnetz (z 28) aufrufen, wird er das Subnetz als String (255.255.255.240) zurückzukehren.

Sag mir, ob du das brauchst oder ob es noch etwas gibt.

+0

Genau das habe ich gesucht! Vielen Dank :) –

+0

+1 für V4 wie in Frage gestellt. Was ist mit V6? – CSharper