LINUX.ORG.RU

Сообщения alexlogvinenkoit

 

Частота отправки данных в UDP

Всем привет!

Написал приложение (клиент-сервер (C++/Linux(Ubuntu))), использую для асинхронности epoll и неблокирующие сокеты. Аналогичное приложение на Windows, только там WinSock2 и IOCP для асинхронности. В общем никогда не думал, что столкнусь с таким багом: мне сообщений приходит или больше, или меньше, чем я их отослал.

Теперь подробнее: есть модуль, который разбивает большие объемы данных на более мелкие (по 1000 байт) и отсылает их в цикле (сервер), этот же модуль (на клиенте) склеивает данные и предоставляет пользователю готовое сообщение (например при отсылке картинки). Модуль работает нормально, тестировал без сетевой части. Как только начал передавать данные по сети - появились баги.

Долго не мог понять в чем дело, потом написал тест для сокетов: 2 UDP сокета в цикле отсылают данные друг-другу, а при обработке принятия данных на конкретный сокет - сделал ранее 2 переменные (int), обнулил их и делаю инкремент определенной переменной. Например: отсылаю 1000 раз на каждый сокет по 1024 байта. Тест провален. В результате переменные не равны 1000, а они меньше (в epoll) и больше (в IOCP) этого значения.

При чем: если поставить после каждой отсылки delay или cout/printf - все работает без сбоев!

В связи с этим вопрос: где может быть баг и какая максимальная частота отправки сообщений для UDP?

Спасибо!

 , , ,

alexlogvinenkoit
()

X11 события без main loop

Всем привет!

Стоит задача: обрабатывать события X11 окна без объявления main loop, т.к. это окно наследуется от GtkWidget, который в свою очередь имеет свой main loop. Есть идея, что можно использовать Xcb, но в документации и примерах, которые я просмотрел, везде объявлен main loop.

Подскажите, пожалуйста, как можно реализовать задачу. Или какой-то пример.

Спасибо!

 ,

alexlogvinenkoit
()

RSS подписка на новые темы