Ограничить время отклика для WebClient
Приложение работает с сервером, созданом на телефоне, но при перезагрузке роутера выдает новый IP. Я решил эту проблему так:
Если не удалось подключиться к серверу, то идем методом перебора IP, к которым могу подключиться:
public static bool flag = false;
public static string ip = "http://192.168.1.1:8082";
public static void
get_ip(int p)
{
if (p == 11) p = 0;
string htmlCode;
WebClient client = new WebClient();
try
{
MessageBox.Show("http://192.168.1." + Convert.ToString(p) + ":8082");
htmlCode = client.DownloadString("http://192.168.1." + Convert.ToString(p) + ":8082");
ip = "http://192.168.1." + Convert.ToString(p) + ":8082";
}
catch (System.Net.WebException e) { p++; get_ip(p); }
flag = false;
}
Как видим, если не удалось подключится к 192.168.1.1, то пробуем к 192.168.1.2 и т.д. до 10 (в сети не будет больше, чем 192.168.1.10), так вот, можно ли как-то ускорить этот процесс?
При выполнении:
htmlCode = client.DownloadString("http://192.168.1." + Convert.ToString(p) + ":8082");
Очень долго пытается соединиться (5-30 секунд) и так на каждой итерации. Можно ли как-то ограничить, если через 2 секунды нету ответа, то перезапустить функцию?
Источник: Stack Overflow на русском