![]() |
![]() |
SBoyko 29.04.2004 - 15:38 |
Вот столкнулся недавно с таким косячком-с. Скорее всего я туплю, но... неужели сервер никак не может определить момент разрыва соединения со стороны клиента? Подробнее: TCommonServerThread = class(TServerClientThread) private FSocketStream : TWinSocketStream; public procedure ClientExecute; override; //to sync with VCL procedure UpdateList; end; procedure TCommonServerThread.ClientExecute; .... while ( not Terminated ) and ( ClientSocket.Connected ) do try FillChar(Buff,BUF_SIZE,0); Sleep(100); if FSocketStream.Read(Buff, BUF_SIZE) = 0 then Continue; if Buff = 'exit' then Terminate; Synchronize(UpdateList); except on e:Exception do begin ClientSocket.Close; Terminate; end; end; ..... Так вот вопрос: неужели сервер может разорвать соединение только в случае прихода запроса на отключение клиента (строка "exit") и в случае если сам захочет этого (ClientSocket.Close & Terminate ) ?????? Никак не могу найти и обработать событие на отсоединение клиента и, естественно, совершить убийство потока. |
SBoyko 1 - 30.04.2004 - 22:15 |
up Никто не сталкивался или вопрос слишком глуп ? ;) |
Delphist 2 - 01.05.2004 - 00:56 | ИМХО, никак. Если клиент не говорит серверу "до свидания", сервер будет ждать тайм-аута. Ведь это выглядит как пауза со стороны клиента. |
Manfred 3 - 01.05.2004 - 09:32 | Я что-то не догоняю: а событие OnClientDisconnect на что? Или я неправильно понял задачу? |
нонейм 4 - 02.05.2004 - 19:26 |
Согласен с <2>. Сервер просто физически не может определить отваливание клиента без периодического обращения к нему. 3: это событие как раз на случай, когда клиент сам честно признается что он отваливается. Если клиент молча умирает, сервер бессилен отловить это событие. |
ste 5 - 03.05.2004 - 09:26 | Если клиент падает и не закрывает сокет, тогда сервер, конечно, не знает об этом. Но если клиент закрыл сокет, то сервер это видит. |
SBoyko 6 - 10.05.2004 - 21:38 | Спасибо всем за ответы. |
SBoyko 7 - 10.05.2004 - 21:41 | OFFTOP: Классный все-таки город Краснодар. Только только из командировки оттуда вернулся ;)) |