Гость
Форумы / C++ [игнор отключен] [закрыт для гостей] / Таймерная служба для сокетов / 5 сообщений из 5, страница 1 из 1
16.11.2002, 12:47
    #32068621
ROMISH
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймерная служба для сокетов
Народ, помогите плз!!!
Пишу серверное многопотоковое приложение на базе сокетов под Windows NT (почтовый сервер). При каждом новом подключении клиента открывается новый поток. Как выставить таймаут для сокетов в каждом потоке. Например при выполнении команды recv() на сервере клиент "упал" и поток висит, пока сам TCP не вызовет исключение (а это очень долго и неуправляемо). Использовать системные таймеры не могу, т.к. их число ограничено. Как быть?
...
Рейтинг: 0 / 0
17.11.2002, 21:50
    #32068764
Alexey M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймерная служба для сокетов
Я б открыл сокеты с ассинхронным обменом и в потоке по ожиданию события принимал решение - о закрытии пототка и следовательно и самого сокета при отсутствии событий обмена по заданному интервалу. Удачи!
...
Рейтинг: 0 / 0
12.12.2002, 08:20
    #32078800
Olle_Up
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймерная служба для сокетов
Все верно, есть такая проблема.
И в NT не получится сделать асинхронный ввод.
Я сделал так: перед вызовом recv() вызывайте
int ret = select(..,...,...,...,...);
последний параметр - время ожидания.
далее анализируйте код возврата.
Рекомендую применять эту функцию перед send и перед recv.
В таком случае recv зависнуть не может, т.к. если select показала,
что есть данные для приема, то это значит, что эти данные уже есть в ядре ОС.
Во всяком случае, часть этих данных. А раз есть часть данных, то recv не зависнет.

Вот в 98-й винде по другому, там recv всегда возвращает 0, если нет данных для приема, а не висит в ожидании.
...
Рейтинг: 0 / 0
14.12.2002, 15:38
    #32079165
Alexey M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймерная служба для сокетов
А кто сказал, что в NT не работает ассинохроный обмен??? Я уже два года работаю исключительно под прошкой и все работает ..... И в простых прогах и в сервисах......
...
Рейтинг: 0 / 0
19.12.2002, 15:08
    #32081909
cyc10ne
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таймерная служба для сокетов
recv и иже с ними это не асинхронные функции
асинхронные это WSARecv, e.t.c.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Таймерная служба для сокетов / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]