C # Как проверить, находится ли IP-адрес в подсети? - PullRequest
1 голос
/ 18 ноября 2011

ОК, это небольшая проблема ... но, тем не менее, раздражает.

В MSVS 2008 .NET 3.5 I IP-адрес. Адрес был длинным, и я просто использовал

if(subnet == subnetmask.Address & addr.Address) { ... }

А потом я только что установил MSVS 2010, все еще используя .NET 3.5, но каким-то образом он сообщает мне IP-адрес. Адрес устарел.

Я все еще могу обернуть BitConvertor в BitConverter.ToInt64(subnet.GetAddressBytes(), 0), но мне кажется, что я иду назад,Есть ли более элегантный способ или встроенная функция для проверки подсети?

Спасибо.

1 Ответ

4 голосов
/ 18 ноября 2011

Причина, по которой IPAddress.Address помечается как устаревшая:

Это свойство устарело.Это адрес семейно-зависимого.Пожалуйста, используйте метод IPAddress.Equals для сравнения.http://go.microsoft.com/fwlink/?linkid=14202

С появлением IPv6 в зависимости от специфических особенностей IPv4 следует считать устаревшим.Ваш обходной путь имеет ту же проблему - зависимость от IPv4.Я думаю, что у вас есть два варианта:

  • Оставьте ваше приложение только для IPv4 и подавьте устаревшее предупреждение.
  • Узнайте, как заставить функционировать работать как в IPv6, так и в IPv4.
...