C # - сложение и вычитание из строки IP-адреса для создания диапазона - PullRequest
2 голосов
/ 08 мая 2011

это немного странная проблема, но я ищу какой-то код на c #, который возьмет IP-адрес, предоставленный в виде строки, и вернет мне другую строку, представляющую диапазон IP-адресов, который включает начальный IP-адрес. Например ...

Если исходная строка «192.168.1.150», тогда мне нужно сгенерировать новую строку со значением «192.168.1.149-192.168.1.151».

Я знаю, что мог бы добиться этого, разделив начальную строку на ".", А затем преобразовав 4-е число в целое, а затем вычтя или добавив к нему ... но это кажется немного неубедительным, и я надеялся у кого-то может быть более элегантное решение:)

Также ... я бы хотел, чтобы эта поддержка также поддерживала адреса IPv6.

Какие-нибудь классные методы? Спасибо.

Ответы [ 3 ]

1 голос
/ 08 мая 2011

Честно говоря, это звучит как лучший способ для IPv4.Получите четвертый октет (.150), приведите к int, вычтите 1, чтобы получить начало диапазона, добавьте один, чтобы получить конец диапазона.Это не намного проще, чем это.Что касается IPv6, Google "добавить шестнадцатеричные числа в c #".

0 голосов
/ 08 мая 2011

Вы понимаете, что то, что вы просите, невозможно сделать только с одного IP-адреса?
Диапазон IP-адресов, который вы хотите найти, зависит от нескольких параметров:

  • Сетевой адрес
  • широковещательный адрес
  • Сетевая маска

Чтобы фактически получить диапазон сети, к которой принадлежит IP-адрес, вам потребуется (если я правильно помню) как минимум два из них. Имея сетевой адрес и широковещательный адрес, диапазон сети очевиден. Имея сетевой адрес и сетевую маску, он может быть вычислен. Это также может быть возможно, если у вас есть IP-адрес и маска сети, но в этом случае у вас может оказаться более одного возможного решения (в зависимости от того, как другие сети разделены - они должны соответствовать мощности двух, но ...).

Поэтому практически невозможно представить вам такой код.

0 голосов
/ 08 мая 2011

По моему мнению, вы должны проанализировать адрес до 4-х байтовых переменных и добавить или вычесть значения к четвертой из них.Но вы можете поместить это в элегантный класс.который будет поддерживать все функции, связанные с IP-адресом в вашем приложении.В DDD этот шаблон называется Value-object.

...