Переполнение UDP сокета, Слишком быстрая отправка сообщений |
Здравствуйте, гость ( Вход | Регистрация )
Переполнение UDP сокета, Слишком быстрая отправка сообщений |
Гость_Михаил_* |
25.9.2014, 10:36
Сообщение
#1
|
Гости |
Со стороны клиента при запросе отправляются обработанные данные. Отправка множества пакетов происходит в цикле While очень быстро и очередь отправки забивается.UDP пакеты не попавшие в очередь отбрасываются. Борюсь с этим usleep(), но хотелось бы оптимизировать. Как узнать предел очереди и вызывать usleep() только при переполнении? Пробовал udpSocket->waitForBytesWritten(1) - на каждом сообщении возвращает false. Хотя без usleepa НЕСКОЛЬКО сообщений в сокет залазают.
|
|
|
OKTA |
25.9.2014, 11:02
Сообщение
#2
|
Студент Группа: Участник Сообщений: 29 Регистрация: 4.6.2014 Пользователь №: 4155 Спасибо сказали: 2 раз(а) Репутация: 0 |
Попробуй после writeDatagram поставить udpSocket->flush(). Должно помочь. Но лучше конечно следить за процессом отправки через void QIODevice::bytesWritten ( qint64 bytes ) [signal]. И отправлять новые данные, когда текущие уже ушли.
|
|
|
Гость_Михаил_* |
25.9.2014, 11:36
Сообщение
#3
|
Гости |
Пробовал. Не помогает.
|
|
|
Гость_Гость_* |
25.9.2014, 11:50
Сообщение
#4
|
Гости |
|
|
|
OKTA |
25.9.2014, 11:57
Сообщение
#5
|
Студент Группа: Участник Сообщений: 29 Регистрация: 4.6.2014 Пользователь №: 4155 Спасибо сказали: 2 раз(а) Репутация: 0 |
Делаешь буфер отправки, в котором будут накапливаться пакеты и слот, в котором отправляешь пакеты из этого буфера. Соответственно после первого вызова, новый вызов этого слота должен происходить по приходу сигнала, что предыдущие пакеты отправлены. Примерно так можно реализовать.
|
|
|
Гость_Михаил_* |
25.9.2014, 12:01
Сообщение
#6
|
Гости |
Пробовал так
и так Результат одинаковый. При каждой отправке выдает false. Хотя очередь забита не до конца.
|
|
|
Гость_Михаил_* |
25.9.2014, 12:03
Сообщение
#7
|
Гости |
Спасибо. Попробую.
|
|
|
OKTA |
25.9.2014, 12:07
Сообщение
#8
|
Студент Группа: Участник Сообщений: 29 Регистрация: 4.6.2014 Пользователь №: 4155 Спасибо сказали: 2 раз(а) Репутация: 0 |
Не, подход с usleep в корне неверный, это не кашерно
|
|
|
Гость_Михаил_* |
25.9.2014, 12:12
Сообщение
#9
|
Гости |
|
|
|
OKTA |
25.9.2014, 12:15
Сообщение
#10
|
Студент Группа: Участник Сообщений: 29 Регистрация: 4.6.2014 Пользователь №: 4155 Спасибо сказали: 2 раз(а) Репутация: 0 |
Я озвучил уже) отслеживать непосредственную отправку пакетов и только потом спамить новыми
|
|
|
Текстовая версия | Сейчас: 29.4.2024, 0:32 |