Android 套接字发送缓冲区队列卡在Samsung中

Android 套接字发送缓冲区队列卡在Samsung中,android,sockets,samsung-mobile,Android,Sockets,Samsung Mobile,我正在开发一个Qt Android应用程序,它每10毫秒发送一次UDP音频包。在一些设备上,比如谷歌Pixel 2,它工作正常,数据按时到达服务器。然而,在三星的S8和S9等设备中,数据包发送每隔几秒钟就会延迟一次。在研究这个问题时,我做了一个实验:在发送新数据包之前,我查询套接字发送缓冲区的大小 ... int qsizeSnd = 0, qsizeRcv = 0; ioctl( _sd, TIOCOUTQ, &qsizeSnd ); ioctl( _sd, SIOCINQ, &

我正在开发一个Qt Android应用程序,它每10毫秒发送一次UDP音频包。在一些设备上,比如谷歌Pixel 2,它工作正常,数据按时到达服务器。然而,在三星的S8和S9等设备中,数据包发送每隔几秒钟就会延迟一次。在研究这个问题时,我做了一个实验:在发送新数据包之前,我查询套接字发送缓冲区的大小

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

qDebug()只发送一个数据包。然后等待它被发送。你要等多久?我说不出来,因为Qt将套接字配置为非阻塞。然而,数据包大多是发送的。屏幕截图中的情况每隔几秒钟发生一次,但并不总是如此。请看我的编辑1。???您可以查看是否有客户收到该邮件。然后每10秒发送一个数据包进行测试。是否每十秒钟收到一次?然后使间隔变小。对于tcp\ip iit,在sendbuffer被填满或经过一定时间之前缓冲传出数据是很正常的。对于udp\ip,同样适用。从这个意义上讲,三星的行为是正常的。对于tcp\ip,可以添加flush()语句或将缓冲区大小设置为0。udp不知道。每10秒发送一次,每10秒接收一次数据包。