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