在手机上查看互联网连接

时间:2014-08-04 11:04:44

标签: c# .net windows-phone-8 windows-phone-8.1 windows-phone-sl-8.1

我想检查一下我的手机是否可以连接到互联网。我已经看过几个问题。其中之一是Question。它说使用NetworkInterface.GetIsNetworkAvailable()这个并且我尝试了。我已将我的电脑与互联网断开连接,同时关闭了模拟器的DataConnection,但NetworkInterface.GetIsNetworkAvailable()此操作始终返回true。但同时我也会检查NetworkInterfaceType.None,有趣的是它会变为空。 任何人都可以解释我在哪里缺少信息吗?

尝试: -

public static void CheckNetworkAvailability()
    {
       // this is coming true even when i disconnected my pc from internet.
       // i also make the dataconnection off of the emulator
        var fg = NetworkInterface.GetIsNetworkAvailable();

        var ni = NetworkInterface.NetworkInterfaceType;
        // this part is coming none  
        if (ni == NetworkInterfaceType.None)
            IsConnected = false;

    }

感谢任何帮助:)

3 个答案:

答案 0 :(得分:9)

我正在使用以下代码检查设备是否可以访问互联网,如果它已连接到wifi或数据连接..

 public void UpdateNetworkInformation()
    {
        // Get current Internet Connection Profile.
        ConnectionProfile internetConnectionProfile = Windows.Networking.Connectivity.NetworkInformation.GetInternetConnectionProfile();

        //air plan mode is on...
        if (internetConnectionProfile == null)
        {
            Is_Connected = false;
            return;
        }

        //if true, internet is accessible.
        this.Is_InternetAvailable = internetConnectionProfile.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess;

        // Check the connection details.
        else if (internetConnectionProfile.NetworkAdapter.IanaInterfaceType != 71)// Connection is not a Wi-Fi connection. 
        {
            Is_Roaming = internetConnectionProfile.GetConnectionCost().Roaming;

            /// user is Low on Data package only send low data.
            Is_LowOnData = internetConnectionProfile.GetConnectionCost().ApproachingDataLimit;

            //User is over limit do not send data
            Is_OverDataLimit = internetConnectionProfile.GetConnectionCost().OverDataLimit;

        }
        else //Connection is a Wi-Fi connection. Data restrictions are not necessary. 
        {
            Is_Wifi_Connected = true;
        }
    }

修改 对于简单的互联网连接,您可以使用以下代码。

  System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();

希望这有帮助!

答案 1 :(得分:7)

即使您将网络条件模拟为没有网络,模拟器也会始终返回NetworkInterface.GetIsNetworkAvailable()为真。

我自己遇到了这个问题,测试此行为的唯一真正方法是将应用程序部署到运行Windows Phone的物理设备,并在关闭数据的情况下对其进行测试。

答案 2 :(得分:4)

NetworkInterface.GetIsNetworkAvailable()检查network connection而不是internet connection。如果您处于任何类型的网络中,则无论true是否存在,它都将返回internet

您可以按以下方式检查互联网连接:

using System.Net

private bool IsOnline() 
{
    try
    {
        IPHostEntry iPHostEntry = Dns.GetHostEntry("www.wikipedia.com");
        return true;
    }
    catch (SocketException ex) 
    {
        return false;
    }
}