Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
16.11.2002, 12:47
|
|||
---|---|---|---|
|
|||
Таймерная служба для сокетов |
|||
#18+
Народ, помогите плз!!! Пишу серверное многопотоковое приложение на базе сокетов под Windows NT (почтовый сервер). При каждом новом подключении клиента открывается новый поток. Как выставить таймаут для сокетов в каждом потоке. Например при выполнении команды recv() на сервере клиент "упал" и поток висит, пока сам TCP не вызовет исключение (а это очень долго и неуправляемо). Использовать системные таймеры не могу, т.к. их число ограничено. Как быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
17.11.2002, 21:50
|
|||
---|---|---|---|
|
|||
Таймерная служба для сокетов |
|||
#18+
Я б открыл сокеты с ассинхронным обменом и в потоке по ожиданию события принимал решение - о закрытии пототка и следовательно и самого сокета при отсутствии событий обмена по заданному интервалу. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.12.2002, 08:20
|
|||
---|---|---|---|
|
|||
Таймерная служба для сокетов |
|||
#18+
Все верно, есть такая проблема. И в NT не получится сделать асинхронный ввод. Я сделал так: перед вызовом recv() вызывайте int ret = select(..,...,...,...,...); последний параметр - время ожидания. далее анализируйте код возврата. Рекомендую применять эту функцию перед send и перед recv. В таком случае recv зависнуть не может, т.к. если select показала, что есть данные для приема, то это значит, что эти данные уже есть в ядре ОС. Во всяком случае, часть этих данных. А раз есть часть данных, то recv не зависнет. Вот в 98-й винде по другому, там recv всегда возвращает 0, если нет данных для приема, а не висит в ожидании. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.12.2002, 15:38
|
|||
---|---|---|---|
|
|||
Таймерная служба для сокетов |
|||
#18+
А кто сказал, что в NT не работает ассинохроный обмен??? Я уже два года работаю исключительно под прошкой и все работает ..... И в простых прогах и в сервисах...... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=57&tablet=1&tid=2036476]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 133ms |
0 / 0 |