मैं सीआईडीआर नोटेशन (72.20.10.0/24) में किसी नेटवर्क को कनवर्ट करने के लिए कुछ सी # कोड खोजने के लिए काफी कुछ देख रहा हूं, बिना किसी किस्मत के आईपी एड्रेस रेंज में। स्टैक ओवरलो पर सीआईडीआर के बारे में कुछ धागे हैं, लेकिन किसी के पास कोई सी # कोड नहीं है और मुझे जो चाहिए वह बिल्कुल कवर करता है। इसलिए मैंने इसे स्वयं बनाने का फैसला किया, और मैं नहीं चाहता था कि कोड इस संस्करण में किसी भी रूपांतरण के लिए System.Net पर भरोसा करे।सीआईडीआर को सी # में नेटवर्क और आईपी एड्रेस रेंज में कैसे परिवर्तित करें?
शायद यह किसी के लिए मदद की जा सकती है।
संदर्भ:
What's the best way to convert from network bitcount to netmask?
"Whatmask" सी से http://www.laffeycomputer.com/whatmask.html
प्रयोग कोड:
uint startIP, endIP;
Network2IpRange("72.20.10.0/24", out startIP, out endIP);
कोड सब कुछ के लिए 32 बिट मान लिया गया है।
static void Network2IpRange(string sNetwork, out uint startIP, out uint endIP)
{
uint ip, /* ip address */
mask, /* subnet mask */
broadcast, /* Broadcast address */
network; /* Network address */
int bits;
string[] elements = sNetwork.Split(new Char[] { '/' });
ip = IP2Int(elements[0]);
bits = Convert.ToInt32(elements[1]);
mask = ~(0xffffffff >> bits);
network = ip & mask;
broadcast = network + ~mask;
usableIps = (bits >30)?0:(broadcast - network - 1);
if (usableIps <= 0)
{
startIP = endIP = 0;
}
else
{
startIP = network + 1;
endIP = broadcast - 1;
}
}
public static uint IP2Int(string IPNumber)
{
uint ip = 0;
string[] elements = IPNumber.Split(new Char[] { '.' });
if (elements.Length==4)
{
ip = Convert.ToUInt32(elements[0])<<24;
ip += Convert.ToUInt32(elements[1])<<16;
ip += Convert.ToUInt32(elements[2])<<8;
ip += Convert.ToUInt32(elements[3]);
}
return ip;
}
अपने सुधार सबमिट करने के लिए स्वतंत्र महसूस करें।
यह मेरे लिए उपयोगी था, धन्यवाद। –