Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QTcpSocket仅每隔~0.5s读取一次数据,即使数据包非常小,是否有加快读取速度的方法?_C++_Qt_Networking_Qtcpsocket - Fatal编程技术网

C++ QTcpSocket仅每隔~0.5s读取一次数据,即使数据包非常小,是否有加快读取速度的方法?

C++ QTcpSocket仅每隔~0.5s读取一次数据,即使数据包非常小,是否有加快读取速度的方法?,c++,qt,networking,qtcpsocket,C++,Qt,Networking,Qtcpsocket,我使用QTcpSocket和QTcpServer进行了客户机/服务器设置,这是一种实时设备,因此理想情况下需要尽可能快,但数据包仅每隔~0.5秒发送和接收一次,即使它们非常小(很少超过几个字节)。另外,没有数据包丢失非常重要,因此我不能使用UDP。我看到另一个线程,其中有人说在服务器端为每个客户机将QAbstractSocket::LowDelayOption设置为1,但我尝试了,结果没有什么不同。有什么方法可以让它更快吗?TCP套接字尝试在每个数据报中容纳尽可能多的数据,因此0.5秒可能是操作

我使用QTcpSocket和QTcpServer进行了客户机/服务器设置,这是一种实时设备,因此理想情况下需要尽可能快,但数据包仅每隔~0.5秒发送和接收一次,即使它们非常小(很少超过几个字节)。另外,没有数据包丢失非常重要,因此我不能使用UDP。我看到另一个线程,其中有人说在服务器端为每个客户机将QAbstractSocket::LowDelayOption设置为1,但我尝试了,结果没有什么不同。有什么方法可以让它更快吗?

TCP套接字尝试在每个数据报中容纳尽可能多的数据,因此0.5秒可能是操作系统决定等待足够的时间,现在不再发送数据的时间,并且决定将套接字发送缓冲区刷新到网络


您可以尝试使用强制将缓冲数据推送到网络。

如果您正在将时间敏感数据从客户端发送到服务器,您可能还需要在客户端设置LowDelayOption。只需尝试了一下,它似乎仍然没有什么不同…
flush()
不会强制将数据推送到网络上,仅适用于网络堆栈。数据会呈现给操作系统,就是这样。使用
LowDelayOption
是TCP套接字的唯一解决方法,这根本不是特定于Qt的。