C++ Qt TCP服务器/多客户端消息读取

C++ Qt TCP服务器/多客户端消息读取,c++,qt,tcp,C++,Qt,Tcp,我正在开发一个客户机/服务器应用程序(使用qt for tcp)。 客户端每秒必须向服务器发送大约15条消息。 问题是: 分组接收来自客户端的消息。我的意思是: 当我收到readyRead()信号并从套接字读取数据时,缓冲区中有多条消息。 这当然会导致系统的滞后 我尝试将传入的连接放在单独的线程中(每个连接一个线程),但没有任何改进。 每次收到readyRead()信号时,我都会尝试升起一个线程,但还是没有 但是,当我在服务器所在的pc上运行多个客户端时,一切似乎都正常。在网络上使用不同的pc时

我正在开发一个客户机/服务器应用程序(使用qt for tcp)。 客户端每秒必须向服务器发送大约15条消息。 问题是:
分组接收来自客户端的消息。我的意思是: 当我收到
readyRead()
信号并从套接字读取数据时,缓冲区中有多条消息。
这当然会导致系统的滞后

我尝试将传入的连接放在单独的线程中(每个连接一个线程),但没有任何改进。
每次收到
readyRead()
信号时,我都会尝试升起一个线程,但还是没有

但是,当我在服务器所在的pc上运行多个客户端时,一切似乎都正常。在网络上使用不同的pc时,会出现延迟。。。
(所使用的网络是100Mbps LAN,消息是上次我遇到类似问题是Qt3.3的QProcess的stdin/stdout通信。它在Linux和Windows上的表现完全不同

最后我们发现,在Linux上,当数据到达时,它使用select()异步响应(快速,在大多数情况下只有一行可读),而在Windows上,新数据的存在是通过Qt mainloop的QTimer轮询的(大延迟,多条消息可用).我们尝试的一个解决方法是减少Qt源中的计时器周期,但最后我们切换到基于本机操作系统机制的共享内存


您的描述听起来像是在Windows操作系统上使用类似的Qt版本。

我在Windows 7/XP上使用的是Qt 4.8.4。您能提供一些有关您使用的解决方案的详细信息吗?谢谢!
tcpSocket->write(message.toUtf8());  
tcpSocket->waitForBytesWritten();  
tcpSocket->flush();