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

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


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