2017-05-04 222 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位)。 –