Is there native .NET type for CIDR subnets?

后端 未结 3 1550
陌清茗
陌清茗 2021-02-07 06:10

It\'s simple enough to code up a class to store/validate something like 192.168.0.0/16, but I was curious if a native type for this already existed in .NET? I woul

相关标签:
3条回答
  • 2021-02-07 07:02

    For ASP.NET Core there is now IPNetwork class. Example usage below:

    var addr = IPAddress.Parse("192.168.0.0");
    var mask = 16;
    var test = new IPNetwork(addr, mask).Contains(context.Connection.RemoteIpAddress);
    
    0 讨论(0)
  • 2021-02-07 07:08

    No there is such native type in .NET, you will need to develop one your self.

    0 讨论(0)
  • 2021-02-07 07:12

    You can use the code from GitHub to do just that:

    https://github.com/lduchosal/ipnetwork

    IPNetwork ipnetwork = IPNetwork.Parse("192.168.168.100/24");
    
    Console.WriteLine("Network : {0}", ipnetwork.Network);
    Console.WriteLine("Netmask : {0}", ipnetwork.Netmask);
    Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast);
    Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable);
    Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable);
    Console.WriteLine("Usable : {0}", ipnetwork.Usable);
    Console.WriteLine("Cidr : {0}", ipnetwork.Cidr);
    

    Output

    Network : 192.168.168.0
    Netmask : 255.255.255.0
    Broadcast : 192.168.168.255
    FirstUsable : 192.168.168.1
    LastUsable : 192.168.168.254
    Usable : 254
    Cidr : 24
    
    0 讨论(0)
提交回复
热议问题