如何在通用Windows平台中检查Internet连接类型

时间:2016-03-09 20:04:59

标签: c# win-universal-app windows-10-universal

我想检查Windows Universal Application中的互联网连接类型。

  1. 未连接
  2. 通过WLAN(WiFi)连接
  3. 通过WWAN(蜂窝数据)连接
  4. 连接到计量网络
  5. 为了提供下载大尺寸内容的选项。并且还可以感知网络可用性的重大变化。

    目前,我只能使用GetIsNetworkAvailable类的NetworkInterface方法检查互联网是否已连接。

    NetworkInterface.GetIsNetworkAvailable();
    

3 个答案:

答案 0 :(得分:44)

1。检查Internet连接可用性

检查互联网是否使用GetIsNetworkAvailable类的NetworkInterface方法。

bool isInternetConnected = NetworkInterface.GetIsNetworkAvailable();
  

GetIsNetworkAvailable() -
  摘要:表示是否有可用的网络连接   如果网络连接可用,则返回 true;否则,false

2。通过WWLN(WiFi)检查Internet连接可用性

检查通过WWAN连接的互联网是否使用IsWlanConnectionProfile

ConnectionProfile属性
ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
bool isWLANConnection = (InternetConnectionProfile == null)?false:InternetConnectionProfile.IsWlanConnectionProfile;
  

<强> IsWlanConnectionProfile
  摘要:获取一个值,该值指示连接配置文件是否为WLAN(WiFi)连接。这决定了是否   WlanConnectionProfileDetails为空   返回:指示连接配置文件是否代表WLAN(WiFi)连接。

3。通过WWAN(移动)检查Internet连接可用性

检查通过WWAN连接的互联网是否使用IsWwanConnectionProfile

ConnectionProfile属性
ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
bool isWLANConnection = (InternetConnectionProfile == null)?false:InternetConnectionProfile.IsWwanConnectionProfile;
  

<强> IsWwanConnectionProfile
  摘要:获取一个值,该值指示连接配置文件是否为WWAN(移动)连接。这决定了WwanConnectionProfileDetails是否为空   返回:指示连接配置文件是否代表WWAN(移动)连接。

<强>参考
Hippiehunter Answer

4。检查计量网络

要检查互联网是否可通过计量连接访问,请在GetConnectionCost课程上使用NetworkInterface方法。

var connectionCost = NetworkInformation.GetInternetConnectionProfile().GetConnectionCost();
if (connectionCost.NetworkCostType == NetworkCostType.Unknown 
        || connectionCost.NetworkCostType == NetworkCostType.Unrestricted)
{
    //Connection cost is unknown/unrestricted
}
else
{
   //Metered Network
}

参考(这里有更详细的答案)
1. https://msdn.microsoft.com/en-us/library/windows/apps/xaml/JJ835821(v=win.10).aspx
2. https://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.networking.connectivity.networkcosttype.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

5。管理网络可用性更改

要感知重要的网络可用性更改,请使用NetworkStatusChanged

的事件NetworkInformation
// register for network status change notifications
 networkStatusCallback = new NetworkStatusChangedEventHandler(OnNetworkStatusChange);
 if (!registeredNetworkStatusNotif)
 {
     NetworkInformation.NetworkStatusChanged += networkStatusCallback;
     registeredNetworkStatusNotif = true;
 }

async void OnNetworkStatusChange(object sender)
{
    // get the ConnectionProfile that is currently used to connect to the Internet                
    ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();

    if (InternetConnectionProfile == null)
    {
        await _cd.RunAsync(CoreDispatcherPriority.Normal, () =>
        {
            rootPage.NotifyUser("Not connected to Internet\n", NotifyType.StatusMessage);
        });
    }
    else
    {
        connectionProfileInfo = GetConnectionProfile(InternetConnectionProfile);
        await _cd.RunAsync(CoreDispatcherPriority.Normal, () =>
        {
            rootPage.NotifyUser(connectionProfileInfo, NotifyType.StatusMessage);
        });
    }
    internetProfileInfo = "";
}

<强>参考
https://developerinsider.co/check-internet-connectivity-in-uwp/ https://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj835820.aspx https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh452991.aspx

希望对某人有所帮助。

答案 1 :(得分:4)

我使用NetworkInformation.GetInternetConnectionProfile().IsWlanConnectionProfileIsWwanConnectionProfile。如果两者都不是true,那么它应该意味着您使用以太网或类似的东西。

请记住,GetInternetConnectionProfile()可以返回null,并且当连接处于活动状态但DHCP失败时,可能会错误地返回有活动的Internet连接。

答案 2 :(得分:0)

我要使用

来查找用户是否具有任何网络连接(包括没有互联网的任何连接)
public bool ConnectedToNetwork()
{
    return NetworkInformation.GetInternetConnectionProfile()?.NetworkAdapter != null;
}