2017-05-04 219 views
1

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

回答

0

基础上。如果你想使用一个IPAddress对象使用的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)}"; 
    } 
+2

更好地说c#6.0或更高(或.net框架4.6)。你可以在Visual Studio 2015中使用字符串插值,而不是必需的2017 – Nino

7

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

注意:如果你正在做的这几次,你应该创建一个Random对象并重用它。

如果要保证第一个元素是不为零,就应该或将其与1把它传递给ip地址构造函数之前:

data[0] |= 1; 
... 

如果你想要一个IPv6地址,请用第一线:

var data = new byte[16]; 

你会得到一个IPV6地址。

+0

这也可能产生'0.x.x.x',这是无效的 – fubo

+0

@fubo就'IPAddress'类而言,它并不是无效的;它会很高兴地创建这样一个地址,但我想你应该说明它是否对单元测试有意义。 –

+0

@fubo Aye,最简单的方法是将它与1进行或运算(因此仍保留随机化的前7位)。 –