一、开发背景
使用 Qt 的 QTcpSocket 接收数据的时候发现数据接收出现粘包的现象,并且实时性很差,通过日志的时间戳发现数据接收的误差在 100ms 以内。
二、开发环境
Qt5.12.2 + QtCreator4.8.2
三、实现步骤
在 socket 连接的槽函数设置接收延时时间,默认时间是100ms,这里可以适当减小刷新的时间周期。这里设置刷新周期是 1ms。
/* 客户端接入槽函数 */
void TcpServer::slotNewConnect(void)
{
/* 获取连接的客户端句柄 这里设置刷新数据时间 1ms */
QTcpSocket *pSocket = m_pServer->nextPendingConnection();
pSocket->setSocketOption(QAbstractSocket::LowDelayOption, 1);
}