我正在處理客戶端/服務器應用程序(使用qt for tcp)。 客戶端必須每秒向服務器發送約15條消息。 問題是這樣的:
來自客戶端的消息是以組的形式接收的。我的意思是: 當我得到readyRead()
信號,並且我從套接字讀取數據時,緩衝區中有多條消息。
這當然會導致系統滯後。Qt TCP服務器/多客戶端消息讀取
我試圖把傳入連接放在單獨的線程(每個連接的線程),但沒有任何改進。
我也試過,每次我有一個readyRead()
信號上升一個線程,但同樣沒有......
,但是當我在同一臺PC服務器上運行多個客戶端,一切似乎確定。當在網絡上使用不同的PC時,發生滯後... (網絡使用的是100Mbps LAN,消息是< 200KB,而PC之間的ping是< 5毫秒,所以我不認爲這是網絡問題)
在客戶端,寫入數據的代碼非常簡單:
tcpSocket->write(message.toUtf8());
tcpSocket->waitForBytesWritten();
tcpSocket->flush();
我也試了一下沒有flush()
或waitForBytesWritten()
但同樣的...
編輯:使用Qt 4.8.4和Windows 7和XP
有人有任何想法如何克服這一點?
預先感謝您!
我在Windows 7/XP上使用qt 4.8.4。你能提供一些關於你使用的解決方案的更多信息嗎?謝謝! – GSta 2013-03-14 14:23:50