Каков самый быстрый и самый эффективный способ проверить на интернет-соединение в.NET?
] Что-то подобное должно работать.[
] [] [public static bool CheckForInternetConnection()
{
try
{
using (var client = new WebClient())
using (client.OpenRead("http://google.com/generate_204"))
return true;
}
catch
{
return false;
}
}
] public static bool HasConnection()
{
try
{
System.Net.IPHostEntry i = System.Net.Dns.GetHostEntry("www.google.com");
return true;
}
catch
{
return false;
}
}
]
[] Это работает [
].Нет абсолютно никакого способа надежно проверить, есть ли подключение к Интернету (я полагаю, вы имеете в виду доступ к Интернету).
Однако вы можете запрашивать ресурсы, которые практически никогда не отключены от сети, например пинговать google.com или что-то подобное. Я думаю, это было бы эффективно.
try {
Ping myPing = new Ping();
String host = "google.com";
byte[] buffer = new byte[32];
int timeout = 1000;
PingOptions pingOptions = new PingOptions();
PingReply reply = myPing.Send(host, timeout, buffer, pingOptions);
return (reply.Status == IPStatus.Success);
}
catch (Exception) {
return false;
}
Вместо проверки, просто выполните действие (веб-запрос, почта, ftp и т.д.) и будьте готовы к тому, что запрос не пройдет, что вы должны сделать в любом случае, даже если проверка прошла успешно.
Рассмотрим следующее:
1 - check, and it is OK
2 - start to perform action
3 - network goes down
4 - action fails
5 - lot of good your check did
Если сеть не работает, ваше действие будет неудачным так же быстро, как и пинг и т.д.
1 - start to perform action
2 - if the net is down(or goes down) the action will fail