C++ QTcpSocket仅每隔~0.5s读取一次数据,即使数据包非常小,是否有加快读取速度的方法?
我使用QTcpSocket和QTcpServer进行了客户机/服务器设置,这是一种实时设备,因此理想情况下需要尽可能快,但数据包仅每隔~0.5秒发送和接收一次,即使它们非常小(很少超过几个字节)。另外,没有数据包丢失非常重要,因此我不能使用UDP。我看到另一个线程,其中有人说在服务器端为每个客户机将QAbstractSocket::LowDelayOption设置为1,但我尝试了,结果没有什么不同。有什么方法可以让它更快吗?TCP套接字尝试在每个数据报中容纳尽可能多的数据,因此0.5秒可能是操作系统决定等待足够的时间,现在不再发送数据的时间,并且决定将套接字发送缓冲区刷新到网络C++ QTcpSocket仅每隔~0.5s读取一次数据,即使数据包非常小,是否有加快读取速度的方法?,c++,qt,networking,qtcpsocket,C++,Qt,Networking,Qtcpsocket,我使用QTcpSocket和QTcpServer进行了客户机/服务器设置,这是一种实时设备,因此理想情况下需要尽可能快,但数据包仅每隔~0.5秒发送和接收一次,即使它们非常小(很少超过几个字节)。另外,没有数据包丢失非常重要,因此我不能使用UDP。我看到另一个线程,其中有人说在服务器端为每个客户机将QAbstractSocket::LowDelayOption设置为1,但我尝试了,结果没有什么不同。有什么方法可以让它更快吗?TCP套接字尝试在每个数据报中容纳尽可能多的数据,因此0.5秒可能是操作
您可以尝试使用强制将缓冲数据推送到网络。如果您正在将时间敏感数据从客户端发送到服务器,您可能还需要在客户端设置LowDelayOption。只需尝试了一下,它似乎仍然没有什么不同…
flush()
不会强制将数据推送到网络上,仅适用于网络堆栈。数据会呈现给操作系统,就是这样。使用LowDelayOption
是TCP套接字的唯一解决方法,这根本不是特定于Qt的。