C#如何测试IPAddress是否在子网中?

时间:2011-11-18 07:43:45

标签: c# ip-address

好的,这是一个小问题......但仍然令人恼火。

在MSVS 2008 .NET 3.5 I IPAdress.Address很长,我只是使用

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

然后现在我刚刚安装了MSVS 2010,仍然使用.NET 3.5但不知怎的,它告诉我IPAddress.Address已经过时了。

我仍然可以在BitConverter.ToInt64(subnet.GetAddressBytes(), 0)中包装一个BitConvertor,但感觉就像我倒退了。是否有更优雅的方式或内置功能来检查子网?

感谢。

1 个答案:

答案 0 :(得分:4)

IPAddress.Address被标记为过时的原因是:

  

此属性已被弃用。它是地址族依赖的。   请使用IPAddress.Equals方法执行比较。   http://go.microsoft.com/fwlink/?linkid=14202

随着IPv6的到来,取决于IPv4的具体功能应该被视为过时。您的解决方法具有相同的问题 - 依赖于IPv4。我认为你有两个选择:

  • 将您的应用程序保留为仅限IPv4,并压制过时的警告。
  • 了解如何使功能在IPv6和IPv4中都有效。