![]() |
|
Модераторы: xvr |
![]()
|
|
| Kappac |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 30.9.2006 Где: Украина, Киев Репутация: нет Всего: нет |
Есть набор неблокирующих сокетов, настраиваемых следующим образом:
События обрабатываются следующим образом:
Проверка на возможность чтения(POLLIN) проходит идеально, но на закрытие соединения никак не хочет. Что я делаю не так? Может не те события жду? P.S. Заранее благодарен за любую помощь! --------------------
|
||||
|
|||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Kappac |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 30.9.2006 Где: Украина, Киев Репутация: нет Всего: нет |
Даже если так:
, то не работает. --------------------
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
а если все-таки как я написал ;)
ну и скобки поставь, не помню точно, но по-моему приоритет у || больше чем у & -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Kappac |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 30.9.2006 Где: Украина, Киев Репутация: нет Всего: нет |
Так тоже не работает. =(
Вчера пол ночи на эти траблы потратил, попробовал и этот вариант в том числе. Закрываешь соединение - остается висеть сокет в CLOSE_WAIT. Это сообщение отредактировал(а) Kappac - 7.12.2009, 23:26 --------------------
|
|||
|
||||
| Kappac |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 30.9.2006 Где: Украина, Киев Репутация: нет Всего: нет |
Извиняюсь, это правильное решение!
Спасибо, Максим! Добавлено через 3 минуты и 25 секунд Остается только вопрос: в документации сказано, что устанавливать эти(POLLRDHUP, POLLHUP) флаги не имеет смысла, они сами генерируются в revents, при возникновении события, как это понимать? --------------------
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
так и понимать только POLLRDHUP автоматически не генерируется ;) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Kappac |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 30.9.2006 Где: Украина, Киев Репутация: нет Всего: нет |
Он не генерируется, но и POLLHUP - не ловится...
Это сообщение отредактировал(а) Kappac - 8.12.2009, 20:15 --------------------
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
POLLHUP генерируется для полной shutdown маски, т. е. просто если получен FIN снгмент, то это еще не является условием его генерации код -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Kappac |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 30.9.2006 Где: Украина, Киев Репутация: нет Всего: нет |
Получается, что при использовании close на сокете не происходит shutdown(socket, 2)?
Последний вопрос, как правильно использовать POLLHUP | EPOLLHUP на сокетах подобного рода? P.S. Спасибо за ссылку, очень инетерсно! P.P.S Подобная информация есть в мане к epoll, но из нее не было понятно почему лучше использовать EPOLLRDHUP. Это сообщение отредактировал(а) Kappac - 8.12.2009, 22:24 --------------------
|
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
происходит но из epoll'а дескриптор удаляется при close() Добавлено через 1 минуту и 35 секунд
не париться по этому поводу POLLHUP - это более жесткий случай POLLRDHUP -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| Kappac |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 30.9.2006 Где: Украина, Киев Репутация: нет Всего: нет |
Это все, конечно, хорошо! Допустим случай, когда в наличии ядро < 2.6.17, как тогда? --------------------
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
получаем POLLIN, последующий recv() аозвращает 0 стандартный способ -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Kappac |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 30.9.2006 Где: Украина, Киев Репутация: нет Всего: нет |
Спасибо! =)
--------------------
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |