nie wiem jak zrobić aby client socket łaczył sie z nastepnym serverem z listy jezeli połaczenie sie nie powiedzie (nie ma takiego servera itp) :( mecze sie juz dosc długo i nie moge znaleŹĆ opcji tymu timeout itd. z góry dzieki za pomoc
Zrob zdarzenie w ClientSocket.OnError wtedy kiedy klient sie nie polaczy sprobuje polaczyc sie z nastepnym pamietaj o wpisaniu ErrorCode:=0 :)
niestety nie działa :( w tym problem ze jak client socket za długo sie łaczy to nie wywala mi errora tylko po prostu sie odłacza. próbowałem w OnDosconnect dac procedurke nastepnego łaczenia ale nie zadzialalo(nie wiem czemu procedura łączenia sie nie wykonuje). prosze o pomoc!
Daj w timerze co 5 sek sprawdzanie, czy zmienna Polaczony jest true. Jeżeli tak to zastopuj timera. Jeżeli nie, to zmień ServerName na następną nazwę i połącz z nim socketa.
W OnConnect socketa daj Polaczony:=true.
Rozwiązanie Kronolusa wydaję mi się dobre. U mnie działa coś takiego w OnError:
begin
if (ErrorCode = 10061) or (ErrorCode = 10060) then
begin
// tu ustaw następny zdres z jakim ma się połączyć
ClientSocket.Address := 'jakis nestepny adres';
ClientSocket.Active := True;
end;
ErrorCode := 0;
end;
Niestety czasem trzeba czekać sporo czasu zanim wywoła się ta procedura. A nie ma czegoś takiego jak TimeOut :-/
Więc z drugiej strony Vogel podał lepsze rozwiązanie, z tym że jeśli będziemy chcieli zatrzymać łącznie to nie bardzo się da, ponieważ nawet gdy ustawimy Socket.Active na False albo Socket.Close to i tak wyskoczy po jakimś czasie błąd (10061 lub 10060). I nie udało mi się anulować łączenia :-/
dzieki Vogel wykorzystałem twój pomysł :) wszystko spoczek działa, jeszcze raz dzieki za pomoc