所以我在网上看到了大量的例子,如果你知道起始IP和结束IP,它们会显示如何获得全系列IP,但我需要的是在提供代码后告诉我完整的IP范围.启动IP和所需的IP地址数.
因此,例如,如果我提供IP地址192.168.0.1作为起始IP和需要60个IP的IP数量,结果应该返回结果
StartIP = 192.168.0.1
EndIP = 192.168.0.61
IPCount = 60
我见过IPNetwork库但需要使用我们没有使用的CIDR.
编辑:
我试过的是以下内容.
我已经尝试过IPNetwork,当使用它时,它需要CIDR,如上所述我们不使用CIDR,所以这对我没有好处.
我想到了最后一个八位字节的基本要点并添加到那个数字,所以如果最后一个八位字节是2且IP的数量是60而新的最后一个八位字节是62.非常简单但是当最后一个八位字节是类似于200的东西和所需的IP数量是70比我们不能仅仅添加到最后一个八位字节那样因为最后一个八位字节会使你最后得到270,因为你不能超过255就会出现问题.现在,如何计算IP实际应该是什么是另一个问题.至于我尝试过哪些代码,这里没什么用处,因为它已经证明完全是错误的方向,因为我发现了上面提到的问题.我不是在找人直接为我编写代码我可以编写自己的代码,但我希望的是有人让我走上正确的道路继续前进.不幸的是,我从来没有一个IP地址.我在学校花了很短的时间来学习如何计算IP地址.那是14年前的事,只有一个学期的一小部分.
您可以将IP地址解析为32位值(就像它真正代表的那样),然后您可以轻松地遍历范围并为它们创建IP地址.
转换:
public static uint ParseIP(string ip) {
  byte[] b = ip.Split('.').Select(s => Byte.Parse(s)).ToArray();
  if (BitConverter.IsLittleEndian) Array.Reverse(b);
  return BitConverter.ToUInt32(b, 0);
}
public static string FormatIP(uint ip) {
  byte[] b = BitConverter.GetBytes(ip);
  if (BitConverter.IsLittleEndian) Array.Reverse(b);
  return String.Join(".", b.Select(n => n.ToString()));
}
创建范围:
string StartIP = "192.168.0.1";
int IPCount = 61;
uint n = ParseIP("192.168.0.1");
string[] range = new string[IPCount];
for (uint i = 0; i < IPCount; i++) {
  range[i] = FormatIP(n + i);
}