Client Socket i Timeout

0

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

0

Zrob zdarzenie w ClientSocket.OnError wtedy kiedy klient sie nie polaczy sprobuje polaczyc sie z nastepnym pamietaj o wpisaniu ErrorCode:=0 :)

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!

0

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.

0

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 :-/

0

dzieki Vogel wykorzystałem twój pomysł :) wszystko spoczek działa, jeszcze raz dzieki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1