2013-05-03 71 views
3

我正在寫一個使用C#的Windows應用程序,我需要檢測網絡位置類型。如何使用C#在Windows中檢測網絡位置類型?

當您將Windows機器連接到網絡(有線或無線)時,它會嘗試識別網絡,然後將其分類爲公共,私人等。我想以編程方式使用我的應用程序執行相同的操作。我怎麼做?

請讓我知道是否需要額外的細節。謝謝。

回答

0
you networkinterface to get the network information 
    NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces(); 


    it has many properties and the output showing infornt of that 

    NetworkInterface[0].Description: Intel(R) 82579LM Gigabit Network Connection 
    NetworkInterface[0].ID: {xxxxxxxxxx-0322-466Fxxx-xxxxxxxxxx} 
    NetworkInterface[0].Name: Ethernet 
    NetworkInterface[0].Interface Type: Ethernet 
    NetworkInterface[0].Operational Status: Down 
    NetworkInterface[0].Speed: -1 
    NetworkInterface[0].Supports Multicast: True 
0

您需要做兩件事情:本地計算機的

  • 解析IP地址。這本身就是一個挑戰,因爲通常機器會有幾個IP地址。它可能同時使用多個IP。 IP地址可能(並且正在)動態變化

  • 檢查IP地址是否在專用範圍內。有關鏈接和更多信息,請參閱this answer。實際上,每個私有地址只能在本地網絡 - 局域網內路由。從外部連接到私人地址是不可能的。如果機器想要與外界通話,它使用網關機器。網關機器會記住請求來自哪裏(私有IP)將其轉換爲公共IP並解決相反的響應。

相關問題