В Линуксе, через Epoll обрабатываю сразу много TCP сокетов. На сокеты подписываюсь так: epoll_ctl(,,EPOLLIN | EPOLLOUT | EPOLLRDHUP | EPOLLET).
Всё отлично, но иногда приходят сообщения с такими флагами:
0C=EPOLLOUT+EPOLLERR или
1C=0С+EPOLLHUP или
1D=1С+EPOLLIN
Самое главное я не смог потворить такие ситуации.
Я не знаю, что они означают и как их обрабатывать в таких сочетаниях, т.е. когда одновременно EPOLLOUT+EPOLLERR, т.е. и ошибка и в сокет можно писать.
Я закрывают сокет в таких ситуациях, но сомневаюсь что правильно делаю.
Здравствуйте, maks1180, Вы писали:
M>Я не знаю, что они означают и как их обрабатывать в таких сочетаниях, т.е. когда одновременно EPOLLOUT+EPOLLERR, т.е. и ошибка и в сокет можно писать.
Я б никак специально не обрабатывал EPOLLERR. Делал бы, что мне нужно (read/write), и пусть они уже приносят мне ошибку.
M>Я не знаю, что они означают и как их обрабатывать в таких сочетаниях, т.е. когда одновременно EPOLLOUT+EPOLLERR, т.е. и ошибка и в сокет можно писать.