在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 .....
答案 0 :(得分:1)
知道网络可用并连接到更广泛的互联网之间存在差异。 NetworkInterface.GetIsNetworkAvailable()
非常快,如果禁用网络接口,则返回false。
如果它返回网络可用,它只表示您可以连接 - 仍然存在DNS查找速度,蜂窝网络连接(如果没有WiFi连接)以及设备尚未连接等
如果导致性能问题,您应该考虑将网络访问权限移出UI线程。
答案 1 :(得分:1)
我们在这里使用它。我的项目中有相同的概念,我做了以下工作。希望它有所帮助。
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;
}
}
答案 2 :(得分:0)
也许您可能想尝试将HttpWebRequest
发送到已知网页,并检查响应中的前几个字符是否与预期结果匹配。您可能还需要多次遍历此检查功能,直到连接测试实际获得结果(无论是成功还是失败)。
将此加载到与UI线程分离的线程上,然后开始使用。一定要捕获任何异常(如果测试由于缺乏连接或其他问题而无法解决)。我实际上在我的一个Windows Phone 7应用程序中使用过这个,但我不确定它是否是最好的想法。
答案 3 :(得分:0)
您可以通过使用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秒的时间段