2013-03-01 53 views
2

我已經確定的IPv4無線接口的本地機器上下面的代碼NetworkInterface.NetworkInterfaceType決定無線接口以太網類型在Windows 8

private List<IPAddressInformation> GetWifiIPAddresses() 
{ 
    var list = new List<IPAddressInformation>(); 
    var networkInterfaces = NetworkInterface.GetAllNetworkInterfaces(); 

    foreach (var networkInterface in networkInterfaces) 
    { 
     if (networkInterface.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) 
     { 
      var interfaceAddressList = networkInterface.GetIPProperties().UnicastAddresses; 
      list.AddRange(interfaceAddressList.Where(interfaceIp => interfaceIp.Address.AddressFamily == AddressFamily.InterNetwork)); 
     } 
    } 

    return list; 
} 

一切就像一個魅力在Windows 7中,但在Windows 8中我的WLAN接口被確定爲以太網適配器。 (NetworkInterfaceType == NetworkInterfaceType.Ethernet代替NetworkInterfaceType.Wireless80211)

這裏是我的WLAN enter image description here

一個IPCONFIG屏幕,但它是一個無線適配器,在Windows 7 IPCONFIG顯示它作爲一個無線接口。

任何線索我該如何解決它?它是驅動程序問題還是Windows 8規範? 如何確定本地機器上的WLAN IP地址?

謝謝!

編輯

正是因爲Hyper-V虛擬交換機。 Hyper-V虛擬交換機包含真正的物理適配器,因此.NET無法將其確定爲WiFi適配器。

當我從我的身體無線適配器刪除在「Hyper-V虛擬交換機管理器」切換到vEthernet它工作正常,就像在Windows 7

但是,打開虛擬交換機可能是確定正確的IP進行的大問題實際的物理設備。

回答

0

切換交換機有點類似於修改物理LAN上的網絡基礎設施......程序通常無法控制的東西。

機器將具有一個或多個網絡適配器,因此它們可能在不同的操作時間具有不同的地址。如果您的問題是關於識別機器的IP地址,那麼您可能需要重新構建它。爲什麼需要IP地址?這可能會提出解決問題的其他方法(包括在適配器名稱上使用啓發式方法而不是依賴於適配器類型)。

如果您需要考慮單個IP地址,也許您最好確定使用哪個適配器連接特定服務器並使用其IP地址。 Win32 API GetBestRoute()爲您提供。

+0

我有WP7應用程序發送文件到PC,在客戶端我需要顯示用戶他的WiFi IP地址,所以他可以建立連接從手機和通過WiFi傳輸所需的文件。 – 2013-03-01 15:40:48

相關問題