Очередь буфера отправки сокета застряла в Samsung - PullRequest
0 голосов
/ 24 августа 2018

Я разрабатываю приложение для Android Qt, которое отправляет аудиопакеты UDP каждые 10 мс. В некоторых устройствах, таких как Google Pixel 2, он работает нормально, и данные поступают на сервер вовремя. Однако в устройствах Samsung, таких как S8 и S9, отправка пакетов задерживается каждые несколько секунд. Изучая эту проблему, я провел этот эксперимент: непосредственно перед отправкой нового пакета я запрашиваю размер буфера отправки сокета

...
int qsizeSnd = 0, qsizeRcv = 0;
ioctl( _sd, TIOCOUTQ, &qsizeSnd );
ioctl( _sd, SIOCINQ, &qsizeRcv );
    qDebug() << "[SOCKET] SEND BUFFER SIZE: " << qsizeSnd << " RCV SIZE: " << qsizeRcv << ")";

В то время как Pixel 2 всегда показывает размер очереди 0 (это означает, что все было отправлено), устройства Samsung очереди, в некоторых моментах до 18 КБ.

enter image description here

Кто-нибудь знает, что может происходить в Samsung и как я могу ускорить отправку через сокет?

Заранее спасибо

Редактировать 1: Это происходит только с WiFi. Используя 4G, он сообщает «Размер буфера отправки: 0» (то же самое, что Pixel 2, который отлично работает)

...