LINUX.ORG.RU

Re: [Не]блокирующие сокеты

Только вручную :-P Скажем, сделай фунцкию aread, которая внутри себя сначала делает poll.

tailgunner ★★★★★ ()
Ответ на: Re: [Не]блокирующие сокеты от Spectr

Re: [Не]блокирующие сокеты

>а зачем тебе в send/recv флаг O_NONBLOCK ?
"Зачем"=="Почему не используешь"? Оно же в обе стороны включает, разве не так? А мне только "оттуда". :)
Или "почему так сделано?" Изначально всё было на блокирующих с select--ом, но выявилась некая глюкавость. Надо попробовать на неблокирующих замутить, но с буферизацией для send-а пока не хотелось возиться.

anonymous ()
Ответ на: Re: [Не]блокирующие сокеты от erDiZz

Re: [Не]блокирующие сокеты

Не, MSG_DONTWAIT не пойдёт. Он как раз send разблокирует, а мне надо наоборот recv. А кст, recv с флагом MSG_PEEK заблокируется если ничего нового нет?

anonymous ()
Ответ на: Re: [Не]блокирующие сокеты от anonymous

Re: [Не]блокирующие сокеты

> "Зачем"=="Почему не используешь"? Оно же в обе стороны включает, разве не так?

нет, не так - можно выставить опцией для сокета в целом (setsockopt) - тогда будет для всех вызовов использоватся, а можно - для конкретного вызова как флаг - тогда сработает только для вызова с этим флагом, не затрагивая сокет в целом.

Spectr ★★★ ()
Ответ на: Re: [Не]блокирующие сокеты от Spectr

Re: [Не]блокирующие сокеты

>можно выставить опцией для сокета в целом (setsockopt) - тогда будет для всех вызовов использоватся, а можно - для конкретного вызова как флаг - тогда сработает только для вызова с этим флагом, не затрагивая сокет в целом
Э... Не совсем понял, как выставить как флаг только для _одного_ вызова. MSG_DONTWAIT он ведь для send-а. А мне бы для recv-а.
Что ж, видимо придётся делать всё по-правильному. :)

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