Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Socket. Восстановление связи. [D5, Win95/98]


TButton ©   (2003-10-05 01:18:00) 


procedure TForm1.gateError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
case ErrorEvent of
eeGeneral:
begin
if MessageDlg("Связь с сервером была потеряна. Восстановить?",mtWarning,[mbyes,mbNo],0)=mrNo
then Close
else
begin
gate.Close;
log("Система: Соединение прервано");
gate.Open;
end;
end;
eeSend:;
eeReceive:;
eeConnect:
begin
if MessageDlg("Произошел сбой при подключении к серверу."
+Chr(13)+"Повторить попытку?",mtWarning,[mbyes,mbNo],0)=mrNo
then Close
else
begin
gate.Close;
log("Система: Соединение прервано");
gate.Open;
end;
end;
eeDisconnect:;
eeAccept:;
else
end;
ErrorCode:=0;
end;

procedure TForm1.gateDisconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
log("Система: Соединение прервано");
if MessageDlg("Связь с сервером была потеряна. Восстановить?",mtWarning,[mbyes,mbNo],0)=mrNo
then Close
else
begin
gate.Close;
log("Система: Восстанавливаем связь");
gate.Open;
end;
end;


внимание вопрос... :)
ситуация такая, в onError все нормально работает. А вот в onDisconnect - не очень, т.е. я убиваю сервак в клиенте случается дисконнект, выводится сообщения "потеряно соединение", задается вопрос, отвечаю "да", выводится "восстанавливаю соединение" и все. тишина. т.е. gate.Close и gate.Open выполняются, но при этом ничего (заметного) не происходит. т.е. сервера нет, по идее должен случиться еррор ееКоннект, но он не случается, вообщето еррор не случается вообще, это наводит на подозрение "а что-то здесь все-таки не так..." хотелось бы услашать мнения, может быть даже советы по етому поводу.


Hogo   (2003-10-07 06:42:00) [1]

Я делаю так-же как > Digitman, при дисконнекте запускаю таймер и через определенное время пытаюсь снова подключиться, надо еще на сервере обработать что клиент отвалился, для этого у меня они постоянно обмениваются сообщениями, типа говорят "я здесь" :)


Digitman   (2003-10-06 14:13:00) [2]

в обработчике OnDisconnect() запусти таймер
в обработчике таймера останови таймер и выполни gate.open


TButton   (2003-10-06 13:37:00) [3]

так не коннектится в дисконнекте. в обработчике ошибок все ровно.


Hogo   (2003-10-06 07:59:00) [4]

Может не надо коннектится в обработчике ошибок?


TButton   (2003-10-05 17:07:00) [5]

наверное тема не очень популярная...


Наверх

Титульная страница Поиск, карта сайта Написать письмо