IP地址增加了C#的控制方式

本文关键字:控制 方式 地址 增加 IP | 更新日期: 2023-09-27 18:19:54

我只想自动增加并获取从任何IP范围开始的IP地址。

例如,

10.1.1.255 (passed value that IP to function)
10.1.2.1 (third octet changed, fourth octet set to '1')

10.1.2.11 (passed value that IP to function)
10.1.2.12 (third octet stable, fourth octet increased)

有可能像上面控制的方式那样做吗?

IP地址增加了C#的控制方式

要提供另一种可能的解决方案,可以在System.Net.IPAddress类上使用Extension方法,如:

public static class MyExtensions
{
    public static System.Net.IPAddress Increment(this System.Net.IPAddress value)
    {
        var ip = BitConverter.ToInt32(value.GetAddressBytes().Reverse().ToArray(), 0);
        ip++;
        return new System.Net.IPAddress(BitConverter.GetBytes(ip).Reverse().ToArray());
    }
}

然后,你会这样使用它:

var ipAddress = IPAddress.Parse("10.1.1.255");
var newIpAddress = ipAddress.Increment();

试试这个:

string[] i = "10.1.1.255".Split('.');
long n = Convert.ToInt64(i[0]) * (long)Math.Pow(256, 3)
        + Convert.ToInt64(i[1]) * (long)Math.Pow(256, 2)
        + Convert.ToInt64(i[2]) * 256
        + Convert.ToInt64(i[3]);
n++;
n = n % (long)Math.Pow(256, 4);
string next = string.Format("{0}.{1}.{2}.{3}", n / (int)Math.Pow(256, 3), (n % (int)Math.Pow(256, 3)) / (int)Math.Pow(256, 2), (n % (int)Math.Pow(256, 2)) / 256, n % 256);

它将IP地址拆分为多个部分。计算它的一个数值。然后加一得到下一个,检查是否溢出。然后输出下一个值。