LINUX.ORG.RU

Есть простые примеры реализации epoll на C/C++?

 , ,


0

1

Настраиваю неблокирующие сокеты... Читаю/отправляю небольшие посылки... А вот когда дело касается больших пакетов, то, как я понимаю, нужно использовать epoll. Не подскажите простенькие примеры чтения и записи с помощью epoll на с/с++?

epoll нужен для одновременного получения уведомлений от большого количества сокетов, а не для чтения больших порций данных.

m0rph ★★★★★
()

libevent, libev, libuv.

anonymous
()
Ответ на: комментарий от m0rph

epoll нужен для одновременного получения уведомлений от большого количества дескриптров,

очевидно поправлено.

anonymous
()

смотри размер буфера сокета
/proc/sys/net/ipv4/tcp_rmem для чтения
/proc/sys/net/ipv4/tcp_wmem для записи

а вообще, какие проблемы с передаче? какой объем, где проблема?

anonymous
()
Ответ на: комментарий от sitev_ru

какой размер буфера у сокетов под андроидом?

бей данные на части, используй свой протокол: {<size in N bytes>, byte1, byte2, ..., byteN} и шли в цикле, принимай ответ о кол-ве принятых байт и продолжай слать следующий

anonymous
()
Ответ на: комментарий от anonymous

коды возврата и ошибки ловишь после каждого вызова?

anonymous
()

Сокет-то у тебя какой, для начала, SOCK_STREAM или SOCK_DGRAM?

m0rph ★★★★★
()

А в чем заключается трудность работы с большими пакетами? Не вижу связи с epoll. epoll() хорош, когда у тебя много соединений, которые большую часть времени простаивают, а активный обмен в некий момент времени нужен лишь для небольшой части сокетов.

pathfinder ★★★★
()
Ответ на: комментарий от sitev_ru

Создавал тему: Почему тут может вылетать программа?

Посмотрел тот чудесно оформленный код без тега «code». Не понимаю зачем usleep(). Возвращаемое значение лучше проверять на (==-1) и на (==0) . Причем важно рассмотреть случай когда была ошибка EINTR, тогда надо просто повторно вызвать send().

ТС я бы посоветовал разобраться, когда он отсылает свои 500кБ, возвращает ли send() ошибку. Если да, то какую. Аналогично с обратной стороны, принимает ли другая сторона на андроиде все данные, если нет, то какие ошибки при этом возникают.

pathfinder ★★★★
()
Последнее исправление: pathfinder (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.