【发布时间】:2019-06-09 09:33:36
【问题描述】:
我知道如何检查设备是否有可用的互联网连接是一个很大的讨论。
我尝试过 Ping、WebClient 和 HTTPClient。 我还使用 Xamarin Essentials 和连接插件。
所有这些都有效,只需向谷歌或您选择的服务器发出请求,您就会得到答案。 您还可以设置 2 秒的超时时间等等。
但现在我遇到了我连接到 WIFI 但 WIFI 本身没有活动的互联网连接的情况。
所以我写的所有东西都不再起作用了。问题是超时会以某种方式被忽略。也许.net中的错误?我不知道。
现在我发现了最后一件事:
try
{
var request = (HttpWebRequest)WebRequest.Create("https://www.google.com");
request.KeepAlive = false;
request.Timeout = 2000;
using (var response = (HttpWebResponse)await request.GetResponseAsync())
{
if (response.StatusCode == HttpStatusCode.OK)
{
//Connection to internet available
return true;
}
else
{
//Connection to internet not available
return false;
}
}
}
catch (WebException webEx)
{
if (webEx.Status == WebExceptionStatus.Timeout)
{
return false;
}
}
catch (Exception e)
{
return false;
}
这是在达到 2 秒超时时我得到 WebException 的唯一解决方案。 在所有其他解决方案中,我坚持超过 1 分钟,直到达到超时。另外,当我将其设置为 500 毫秒或其他值时。
有人知道为什么没有达到给定超时的原因,例如使用其他方法吗?
【问题讨论】:
-
你得到答案了吗?有没有办法在不发送 ping 的情况下做到这一点
标签: android ios .net xamarin timeout