![](/img/trans.png)
[英]How to check the internet connection availability in windows phone 8 application
[英]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.