【问题标题】:C# Generating a random IP AddressC# 生成随机 IP 地址
【发布时间】:2017-10-02 07:52:14
【问题描述】:

我一直在为 IOT 设备做一些模拟,我需要在 C# 中生成一个随机 IP 地址。创建随机 IP 地址最简单的方法是 C#?

【问题讨论】:

    标签: c# random ip


    【解决方案1】:

    如果你想使用IPAddress 对象:

    var data = new byte[4];
    new Random().NextBytes(data);
    IPAddress ip = new IPAddress(data);
    

    注意:如果您多次这样做,您应该只创建一个Random 对象并重复使用它。

    如果要确保第一个元素不为零,则应在将其传递给 IPAddress 构造函数之前将其与 1 进行 OR:

    data[0] |= 1;
    ...
    

    如果您想要 IPV6 地址,请将第一行替换为:

    var data = new byte[16];
    

    您将获得一个 IPV6 地址。

    【讨论】:

    • 这也可能产生无效的0.x.x.x
    • @fubo 就IPAddress 类而言并非无效;它会很高兴地创建这样一个地址,但我想如果它对单元测试很重要,你应该考虑它。
    • @fubo 是的,最简单的方法是用 1 或它(从而仍然保持随机的前 7 位)。
    【解决方案2】:

    基于使用 Visual Studio 2017 和字符串插值

        public string GetRandomIpAddress()
        {
            var random = new Random();
            return $"{random.Next(1, 255)}.{random.Next(0, 255)}.{random.Next(0, 255)}.{random.Next(0, 255)}";
        }
    

    【讨论】:

    • 最好说 c# 6.0 或更高版本(或 .net framework 4.6)。您可以在 Visual Studio 2015 中使用字符串插值,而不是 2017 年
    猜你喜欢
    • 2012-03-03
    • 2012-05-03
    • 2014-01-27
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多