Witam!
Pisze prosta aplikacje do komunikacji typu Klient-Serwer w oparciu o komponentny TClientSocket oraz TServerSocket. Chcialbym osiagnac cos takiego :
- Polaczenie aktywne (mozliwa komunikacja)
- Server z niewiadomych dla klienta przyczyn zostaje odlaczony od sieci (dajmy na to na 3h)
- Przez ten czas Client jest caly czas wlaczony do sieci i proboje sie laczyc z serwerem, poki ten znow nie bedzie aktywny
- W momencie jak Server pojawia sie w sieci, następuje wznowienie polaczenie z Clientem
Niby proste i oczywiste, wywoluje sobie w ClientSocket.OnDisconnect cos takiego :
procedure TForm1.ClientSocketDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
MainSocket.Active := false;
MainSocket.Host := '192.168.2.103';
MainSocket.Port := 1200;
MainSocket.Active := true;
end;
a w ClientSocket.OnError :
procedure TForm1.ClientSocketError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
var
Kod: integer;
begin
Kod := ErrorCode;
ErrorCode := 0;
case Kod of
10060:
begin
Memo1.Lines.Add('Lacze ponownie');
ClientSocket.Active := True;
end;
else
begin
Memo1.Lines.Add('Wystapil blad o numerze '+IntToStr(Kod));
end;
end;
end;
No ale niestety nie dziala, ani nie wywala zadnego innego bledu. nic sie nie dzieje po wlaczeniu do sieci Servera.
Co ciekawe, metoda ktora napisalem dziala w przypadku gdy mamy najpierw wylaczony serwer, a nastepnie odpalamy klienta i dokonujemy pierwszego zestawienia polaczenia. Wtedy metoda opisana przeze mnie dziala doskonale, i w momencie gdy przylacze do sieci server polaczenie jest tworzone. Problem jest ze wznawianiem zerwanego przez serwer polaczenia.
Jakies pomysly??
PS -> Osiagnalem zamierzony efekt tworzac nowy watek ktory wywolywal mi funkcje OnCreate formatki :P malo profesjonalnie, ale dziala. Wciaz czekam na sugestie :)))