2012-03-30 4 views
2

Поскольку мне нужно настроить довольно много машин Windows Server, я решил написать небольшую программу на C#, чтобы упростить некоторые из этих задач. Последнее, что я должен добавить, это возможность вводить диапазон IP (например, 74.117.238.112/28) и автоматически добавлять все это как статические IP-адреса в сетевой адаптер.Определите маску подсети IPv4 в C#

Я всегда использовал веб-калькуляторы в прошлом для этого, однако я пытаюсь выяснить, как это сделать программно в C#. Я нашел эту запись HERE, которая имеет большой смысл (немного чему-то научилась), но немного запутанна. Калькуляторы, которые я использовал в прошлом, представили мне маски Subnet, такие как 255.255.255.240 или .248, где, как кажется, только одно из четырех значений.

Правильно ли этот пример кода, или его необходимо будет доработать, чтобы его можно было использовать?

ответ

5

ссылка, которую вы упомянули, дает вам стандартные маски подсети для разных классов IP. Это не действительно подсети.

Если вы правильно поняли, вам нужна только маска подсети, которая зависит только от подсети (/ 28 в вашем примере), а не от IP-адреса.

Я написал эту небольшую функцию ::

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

Если вы вызываете его подсети (например, 28), он будет возвращать подсеть в виде строки (255.255.255.240).

Сообщите мне, если это то, что вам нужно, или если что-то еще.

+0

Это именно то, что я искал! Большое вам спасибо :) –

+0

+1 для V4, как указано в вопросе. Как насчет V6? – CSharper

Смежные вопросы