Я бы не подумал, что это невозможно, просто не так просто.
Я построил что-то вроде этого, и да, это не идеально, но первый шаг важен: проверить, есть ли сетевое соединение. Windows Api не делает большую работу, так почему бы не сделать лучшую работу?
bool NetworkIsAvailable()
{
var all = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
foreach (var item in all)
{
if (item.NetworkInterfaceType == NetworkInterfaceType.Loopback)
continue;
if (item.Name.ToLower().Contains("virtual") || item.Description.ToLower().Contains("virtual"))
continue; //Exclude virtual networks set up by VMWare and others
if (item.OperationalStatus == OperationalStatus.Up)
{
return true;
}
}
return false;
}
Это довольно просто, но действительно помогает улучшить качество проверки, особенно если вы хотите проверить различные конфигурации прокси.
Итак:
- Проверьте, есть ли сетевое подключение (сделайте это действительно хорошим, возможно, даже отправьте журналы разработчикам, если есть ложные срабатывания для улучшения функции NetworkIsAvailable)
- HTTP Ping
- (циклическая прокси-конфигурация с HTTP-пингами на каждом)