2010-05-17 79 views
2

相當於inet_addr函數我需要知道如何使用IP地址,如inet_addr(「192.168.0.2」);在C++ 這裏返回DWORD。我在C#中的包裝將此字段視爲Int?什麼是在C#

任何人都可以幫助解決這個誤解嗎?

+0

你想要做什麼? C#已經在整個IP堆棧中包含了包裝 - 你不應該需要P /調用這些包。 – 2010-05-17 16:34:57

+0

我在C++庫中有一個包裝器,我只是閱讀文檔以使用這個庫,但是這些示例是用C++代碼編寫的,我在某些地方對此不太瞭解。在此處設置IP地址爲DWORD類型字段,其中我的包裝具有int字段。所以我想知道如何轉換IP地址字符串(等「192.168.0.2」)並將其設置爲int字段。 – 2010-05-17 17:06:40

+0

如果您向我們展示了C++代碼和C#代碼,則可能會幫助您解決問題。 – 2010-05-17 17:22:18

回答

4

你應該使用IPAddress類。它會讓你感到困擾,因爲它試圖阻止你依賴IP4地址。地址成員聲明已過時。下面是解決方法:

using System; 
using System.Net; 

class Program { 
    static void Main(string[] args) { 
     var addr = IPAddress.Parse("192.168.0.2"); 
     int ip4 = BitConverter.ToInt32((addr.GetAddressBytes()), 0); 
     Console.WriteLine("{0:X8}", ip4); 
     Console.ReadLine(); 
    } 
} 

輸出:0200A8C0

注意,地址是正確的網絡順序(big endian)的。

+0

看起來像這樣做的工作。感謝名單 – 2010-05-17 18:54:39

0

好吧,如果我.NET承擔其小端機所以你也「可能」做到這一點:

address = (192 << 0) | (168 << 8) | (0 << 16) | (2 << 24); 

我敢肯定,這就是一輪以正確的方式:)