adf88 napisał(a):
To ja dodam jeszcze, że timeout ustawiony na 1 sekundę to mało. Można odpalić kilka wątków, jeden na każdy serwer, timeout dać na jakieś 30 sekund, a gdy odpowie pierwszy serwer to ubić resztę wątków.
Powiem tak - nie jest mi potrzebny serwer, który odpowiada po kilku, czy nawet kilkunastu sekundach. Ja potrzebuję takiego, który odpowiada natychmiast. W czasie działania aplikacji niektóre czynności są zapisywanie w bazie danych z dokładną godziną co do sekundy. Zanim aplikacja tą czynność zapisze w bazie, pobiera więc aktualną godzinę z serwera (nie chcę, żeby pobierał z systemu, bo w Windowsie można ręcznie zmienić). Jeśli program miałby przy każdej takiej operacji się zastanawiać, uruchamiać ileś wątków trwających po 30 sekund, to raczej nie wpłynęło by to pozytywnie na jego szybkość działania. W 99% przypadków ten pierwszy serwer odpowie i nie będzie żadnego czekania. W pozostałych 1% przypadków odczeka sekundę i sprawdzi drugi serwer z listy i on będzie dostępny. Raz na tysiąc przypadków może się zdarzyć, że właśnie utraciło się połączenie z internetem i żaden serwer nie będzie dostępny. Zastanawiam się wręcz nad zmniejszeniem tego timeouta, bo mam to zaprogramowane tak, że program w przypadku udanej próby pobrania czasu "zapamiętuje" z którego serwera go pobrał i przy następnej okazji zaczyna pobieranie od niego. Dlatego jak jakiś serwer odpowiada np. dopiero po 900 ms, to chyba lepiej, jakby go program zignorował i poszukał innego, bo później co chwilę będzie robił niepotrzebne lagi w trakcie działania aplikacji.