Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.22;
Скачать: CL | DM;

Вниз

TServerSocket - как узнать что клиент до сих пор подключен   Найти похожие ветки 

 
tm   (2003-07-21 11:37) [0]

Здраствуйте, помогите пожалуйста с сокетами.
Я использую тип stThreadBlocking. Сервер получает от клиента команду и выполняет ее. Ошибка происходит когда клиент закрывает свою программу не послав команды о завершении, а сервер продолжет слушать клиента. Пробовал использовать ClientSocket.Connected, но он не дает знать.
У меня в процедуре ClientExecute след. код:

var
ch: char;
...
MyStrm:=TWinSocketStream.Create(ClientSocket, 20000);
...
{ Ожидание команды от клиента }
repeat
while not MyStrm.WaitForData(500) do
( ch, 1) Здраствуйте, помогите пожалуйста с сокетами.
Я использую тип stThreadBlocking. Сервер получает от клиента команду и выполняет ее. Ошибка происходит когда клиент закрывает свою программу не послав команды о завершении, а сервер продолжет слушать клиента. Пробовал использовать ClientSocket.Connected, но он не дает знать.
У меня в процедуре ClientExecute след. код:

var
ch: char;
...
MyStrm:=TWinSocketStream.Create(ClientSocket, 20000);
...
{ Ожидание команды от клиента }
repeat
while not MyStrm.WaitForData(500) do
Application.ProcessMessages;
until MyStrm.Read(ch, 1)=1;

{ Обработка команды }
case ch of
#0: ... ;
#1: ... ;
...
#2: Выход;
...


 
Digitman ©   (2003-07-21 15:12) [1]

если кл.приложение завершется нештатно (например, принудительное снятие кл.процесса с выполнения либо физ.разрыв соединения клиента с сетью), то обнаружить сей факт на стороне сервера можно только периодически посылая что-то клиенту - вызов любого из send-методов с любыми параметрами в этом случае :
- вызовет немедленное исключение;
- в non-blocking-режиме завершится нормально, но через некоторое время (~ 3 мин. по умолчанию) будет возбуждено событие OnClientError() с кодом ошибки, отражающим причину отказа



Страницы: 1 вся ветка

Текущий архив: 2003.09.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
14-71880
Hawk2
2003-09-03 16:04
2003.09.22
Что там внутри?


7-71963
MakNik
2003-07-11 09:41
2003.09.22
Процессы в NT4


1-71678
LinOS
2003-09-11 12:14
2003.09.22
Как при нажатии на кнопку добавить в MainMenu пункты из PopupMenu


1-71572
Globus
2003-09-09 21:08
2003.09.22
SOS ! Не работает raise Exception.Create( Сообщение )


14-71956
имя
2003-09-02 14:55
2003.09.22
Formula One 6