2008-11-22 14 views
13

Nó đủ đơn giản để mã hóa một lớp để lưu trữ/xác nhận một cái gì đó như 192.168.0.0/16, nhưng tôi đã tò mò nếu một kiểu gốc cho điều này đã tồn tại trong .NET? Tôi tưởng tượng nó sẽ làm việc rất giống IPAddress:Có loại .NET gốc cho mạng con CIDR không?

CIDR subnet = CIDR.Parse("192.168.0.0/16"); 

Về cơ bản nó chỉ cần chắc chắn rằng bạn đang làm việc với một địa chỉ IPv4 hay IPv6 và sau đó số bit nêu rõ bạn là hợp lệ cho loại đó.

Trả lời

3

Không có loại gốc như vậy trong .NET, bạn sẽ cần phát triển một bản thân.

22

Bạn có thể sử dụng mã từ CodePlex để làm điều đó:

http://ipnetwork.codeplex.com/

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