繁体   English   中英

Windows phone7:检查Internet连接可用性

[英]Windows phone7: Check Internet connection availability

在windows phone7中,我只需要在继续下一组操作之前检查互联网连接是否可用。 我搜索并找到了许多POSTS中建议的3个选项。 它们如下。

(a). bool isNetworkAvailable = NetworkInterface.GetIsNetworkAvailable();
(b). bool isNetworkAvailable = DeviceNetworkInformation.IsNetworkAvailable;
(c). bool isNetworkAvailable = (NetworkInterface.NetworkInterfaceType != NetworkInterfaceType.None);

在(a)和(b)选项中,即使WIFI为OFF并且没有可用的互联网连接,它也会提供TRUE作为结果。 但是(c)提供互联网不可用时的确切(实际)结果。 但是需要很多时间来回应。 在那之前,应用程序被卡住了......

我用一个真实的设备检查了所有这些(不仅仅是模拟器),并且努力哪种方式将是检查设备的互联网可用性的最佳方式。

任何建议都非常感谢...谢谢inadvance .....

知道网络可用并连接到更广泛的互联网之间存在差异。 NetworkInterface.GetIsNetworkAvailable()非常快,如果禁用网络接口,则返回false。

如果它返回网络可用,它只表示您可以连接 - 仍然存在DNS查找速度,蜂窝网络连接(如果没有WiFi连接)和设备不存在的潜在问题已连接等

如果它导致性能问题,您应该考虑将网络访问从UI线程移开。

我们在这里使用它。 我的项目中有相同的概念,我做了以下工作。 希望能帮助到你。

  public bool netWorkAvailable()
    {
        if (NetworkInterface.GetIsNetworkAvailable())
        {
            Logger.log(TAG, "netWorkAvailable()");
            return true;
        }
        return false;
    }

 if (netWorkAvailable())
   {
     buffer.Append(SERVER_URL);
     buffer.Append("_req=").Append(8);
     httpConnection = new HttpConnection();
     httpConnection.connect(REQ_REGISTRATION, buffer.ToString(), listener, null);
     httpConnection.Post();
    }

我有不同的类处理所有httpconnection。 除了这些之外,我还为项目目的检查了一些其他的东西,它们如下:

public bool IsWifiAvailable()
    {
     if ((NetworkInterface.NetworkInterfaceType == NetworkInterfaceType.Wireless80211))
         {
          return true;
         }
     else
       {
        return false;
       }
    }

    public bool threeGkAvailable()
    {
        if ((NetworkInterface.NetworkInterfaceType == NetworkInterfaceType.MobileBroadbandCdma)
                  || (NetworkInterface.NetworkInterfaceType == NetworkInterfaceType.MobileBroadbandGsm))
        {
            return true;
        }
        else
        {
            return false;

        }
    }

也许您可能想尝试将HttpWebRequest发送到已知网页并检查响应中的前几个字符是否与预期结果匹配。 您可能还需要多次遍历此检查功能,直到连接测试实际获得结果(无论成功还是失败)。

将它加载到与UI线程分离的线程上,然后开始使用它。 一定要捕获任何异常(如果测试由于缺乏连接或其他问题而无法解决)。 我实际上在我的一个Windows Phone 7应用程序中使用了这个,但我不确定它是否是最好的想法。

您可以通过使用webclient请求网页来检查用户是否已连接到互联网。

WebClient client = new WebClient();
        client.DownloadStringCompleted += (s, e) =>
        {
            if (e.Error == null && !e.Cancelled)
            {
                //completed.TrySetResult(true);
                MessageBox.Show("Internet Connected", "True", MessageBoxButton.OK);
            }
            else
            {
                //completed.TrySetResult(false);
                MessageBox.Show("Internet Not Connected", "False", MessageBoxButton.OK);
            }
        };
        client.DownloadStringAsync(new Uri("http://www.google.com/"));

如果有,也可以设置20秒的时间段

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM