使用 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);
- }