RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Ответить на сообщение
Имя:
e-mail:
FIDO:
Home page:
сохранить данные о вас
Тема:
> > > Ситуация такая. Клиент закрывает соединение. Как на сервере достоверно узнать об этом? > > > rc:=getsockopt(xSock,SOL_SOCKET,SO_ERROR,@B, hLen); > > > > > > Проверяется на localhost петле. > > > Выдает всегда в переменную "В" ноль. Результат работы не зависит от состояния соединения. > > Ну а что ты ожидал? Нормальное полузакрытое TCP соединение. Откуда ошибка? Более того, оперативно узнать, что к нам пришел FIN, вообще невозможно. А так просто читаешь поток до тех пор, пока он не закончится (read вернулся без ошибки, но с данными нулевой длины). > > > Ок. А если поток данных длинный, соединение медленное? Не будет ли ситуаций, когда в потоке появляются "окна" и read вертается без ошибки, но соединение еще живо? Или в этом случае read ждет данных даже в неблокирующем режиме?
_, _, _,
/ \ (_ / ~ )
\ / , ) / /
~ ~ ~~~
Programmed by
Dmitri Maximovich
,
Dmitry I. Platonoff
,
Eugen Kuleshov
.
25.09.99 (c) 1999,
RU/2
. All rights reserved.
Rewritten by
Dmitry Ban
. All rights ignored.