LINUX.ORG.RU

Можно ли в TCP сервере выходить по таймауту.


0

0

Есть такая задача. Сервер(TCP) должен запуститься, подождать несколько минут соединение и в случае отсутствия завершить работу. Можно ли перед функцие accept, вызывать функцию select и ожидать появления данных на сокете? Алгоритм такой bind() listen() select() accept() Вопрос, если я в клиенте вызову метод connect, сработает ли select в сервере, ведь соединение еще не открыто?


А что по этому поводу говорит man -s2 accept ?

bibi ()

>сработает ли select в сервере, ведь соединение еще не открыто?

да

ведь соединение еще не открыто?

вот как раз таки «в клиенте вызову метод connect» и спровоцирует select выйти из блокировки, в протвном случае он оттель выходит по таймауту.

Deleted ()

Иногда полезно читать маны.
«Для того, чтобы получать уведомления о входящих сооединениях на сокете, можно использовать select(2) или poll(2). В этом случае, когда придёт запрос на новое соединение, будет доставлено событие „можно читать“, и после этого вы можете вызвать accept, чтобы получить сокет для этого соединения. Можно также настроить сокет так, чтобы он посылал сигнал SIGIO, когда на нём происходит какая-либо активность; см. socket(7), где описаны детали. »

nu11 ★★★★★ ()

> Можно ли

<*nix>да</*nix>
<*dows mode=«нормально»>нет</*dows>
<*dows mode=«чере_8_вложенных_жоп_и_с_плазменным_резаком»>частично</*dows>

arsi ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.