2011-03-07 63 views
0

我如何獲得我的IP和服務器的IP在Windows CE(使用C#)?如何獲取我的設備和服務器的IP IP(windows-CE)

+0

does ** Dns.GetHostName(); **存在於Compact框架中? http://msdn.microsoft.com/en-us/library/system.net.dns.gethostname.aspx – Stormenet 2011-03-07 20:33:57

+0

不確定您的意思是「服務器IP」。你知道服務器的主機名,並且你想知道IPv4地址嗎? – Bryan 2011-03-07 22:13:04

回答

2

你的問題含糊不清。我不知道你想要哪種適配器或地址類型,所以我假設你需要第一個本地適配器的IPv4地址。這將是這個樣子:

var ip = (from a in Dns.GetHostEntry(Dns.GetHostName()).AddressList 
    where a.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork 
     select a).First().ToString(); 

獲取給定服務器的IP地址,就需要你知道它的主機名,然後你會做對名稱進行查找(即Dns.GetHostEntry)。它看起來很像上面的代碼,除非你使用服務器主機名而不是Dns.GetHostName()調用。

0

它涉及到一些P/Invoke魔法。因爲它有很多代碼,我擁有的部分是專有的,所以我不能發佈所有的代碼,但我可以提供一些提示。

// MSDN: http://msdn.microsoft.com/en-us/library/aa365917(v=vs.85).aspx 
[DllImport("iphlpapi.dll", SetLastError = true)] 
internal static extern int GetAdaptersInfo(IntPtr pAdapterInfo, ref int pOutBufLen); 

[DllImport("iphlpapi.dll", SetLastError = true)] 
internal static extern int GetAdapterIndex(string AdapterName, ref int IfIndex); 
0

我知道這個問題很舊,但最近我遇到了這個問題。由於我們已經使用OpenNETCF,我使用這個庫來查詢我的NIC及其相關地址。這是在Windows Mobile 6.5(CE 5.2)上。

var ifs = OpenNETCF.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces(); 
foreach (var nic in ifs) 
{ 
    IPAddress myip = nic.CurrentIpAddress; 
} 

即使沒有配置DNS,這也可以工作。