LINUX.ORG.RU

poll события коррелируют?


0

0

Наблюдаю очень странные вещи,

Если слушать fds[0].events = POLLIN , то POLLIN срабатывает надежно, но если сделать так: ..... fds[0].events = POLLIN | POLLOUT; ..... if( fds[0].revents & POLLIN ) { // ~30% срабатываний, очень ненадежно .... } else if( fds[0].revents & POLLOUT ) { .... }

Сокет только получает данные в обоих случаях. Ваши комментарии?

anonymous

Что значит 30% срабатываний?

anonymous
()

это значит, что было принято 30% от всех посланных пакетов.

anonymous
()

Это как? UDP протокол, что ли?

anonymous
()

Извините, но протокола TCP/IP не существует. Опишите проблему поподробнее.

anonymous
()

проблема и так явно описана, можете проверить.

Намек на TCP, методом исключения несложно было догадаться.

anonymous
()

Тогда объясните, что значит "было принято 30% пакетов". TCP потоково-ориентированный протокол, и в нём даже нет такого понятия. Более того, это протокол с гарантированной доставкой.

Так что лучше постите проблемный фрагмент кода.

anonymous
()

проблемный код выше перед вами ^^^ проблема в том, что не все пакеты принимаются по событию POLLIN во втором случае.

P.S. не будьте идиотом

anonymous
()

Ну-ну. Вы просите помощь, а тем, кто пытается что-то понять говорите "не будьте идиотом" :-)

Если Вы такой умный, зачем вообще вопросы задаёте.

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