我正在开发一个客户端/服务器应用程序(将 qt 用于 tcp)。客户端每秒必须向服务器发送大约 15 条消息。问题是这样的:
来自客户端的消息是分组接收的。我的意思是:当我收到readyRead()
信号并从套接字读取数据时,缓冲区中有多个消息。
这当然会导致系统滞后。
我尝试将传入连接放在单独的线程中(每个连接线程),但没有任何改进。
每次收到readyRead()
信号时,我也尝试启动线程,但又没有...
但是当我在与服务器相同的电脑上运行多个客户端时,一切似乎都很好。当在网络上使用不同的电脑时,会出现延迟......(使用的网络是 100Mbps LAN,消息 <200KB,电脑之间的 ping <5msec,所以我不认为这是网络问题)
在客户端,写入数据的代码非常简单:
tcpSocket->write(message.toUtf8());
tcpSocket->waitForBytesWritten();
tcpSocket->flush();
我也尝试过没有flush()
或waitForBytesWritten()
相同的...
编辑:使用 Qt 4.8.4 和 Windows 7 和 XP
有人知道如何克服这个问题吗?
先感谢您!