我正在寫一個使用C#的Windows應用程序,我需要檢測網絡位置類型。如何使用C#在Windows中檢測網絡位置類型?
當您將Windows機器連接到網絡(有線或無線)時,它會嘗試識別網絡,然後將其分類爲公共,私人等。我想以編程方式使用我的應用程序執行相同的操作。我怎麼做?
請讓我知道是否需要額外的細節。謝謝。
我正在寫一個使用C#的Windows應用程序,我需要檢測網絡位置類型。如何使用C#在Windows中檢測網絡位置類型?
當您將Windows機器連接到網絡(有線或無線)時,它會嘗試識別網絡,然後將其分類爲公共,私人等。我想以編程方式使用我的應用程序執行相同的操作。我怎麼做?
請讓我知道是否需要額外的細節。謝謝。
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
您需要做兩件事情:本地計算機的
解析IP地址。這本身就是一個挑戰,因爲通常機器會有幾個IP地址。它可能同時使用多個IP。 IP地址可能(並且正在)動態變化
檢查IP地址是否在專用範圍內。有關鏈接和更多信息,請參閱this answer。實際上,每個私有地址只能在本地網絡 - 局域網內路由。從外部連接到私人地址是不可能的。如果機器想要與外界通話,它使用網關機器。網關機器會記住請求來自哪裏(私有IP)將其轉換爲公共IP並解決相反的響應。