2012-07-18 42 views
1

我使用QTcpSocket從服務器獲取信息。QTcpSocket重新連接方式

從我這邊來說,有必要連接並等待來自服務器的字節,並獲得它們。

我創建了QTcpSocket。將它連接到主機。開始獲取數據,沒關係。但是,例如,當我拔出以太網電纜時,與插座對象沒有區別。

我試圖連接QAbstractSocket :: error()和QAbstractSocket :: stateChange()等信號,但在斷開連接時沒有任何東西給我。

我的任務是等待幾秒鐘,嘗試重新連接,直到我再次獲得連接。

有什麼建議嗎?

+5

TCP連接不會因爲電纜斷開而丟失。斷開電纜並在一分鐘內重新連接(如果我正確記得的話)應該只顯示爲程序的延遲,而不是斷開連接。 – 2012-07-18 12:15:30

+0

你的協議是否支持乒乓? – 2012-07-18 13:58:21

回答

0

我在編寫客戶端和服務器項目時遇到同樣的問題。

我使用了SIGNAL - > disconnected(),它在客戶端斷開連接時立即發出。

connect(client,SIGNAL(disconnected()),this,SLOT(DisconnectMessage()));

請嘗試使用它。

+0

正如問題評論中提到的那樣,套接字不報告連接,因爲它仍在重試發送/接收數據包。您需要等待一段時間,直到它放棄並報告斷開連接。 – 2012-07-19 01:30:05

+0

我已經做了一些測試,所以我看到我的QTcpSocket desconects在拔掉以太網1-2分鐘後,當我再次插入它,一段時間後,它會得到連接automaticaly。它完全令我滿意。 – mmmaaak 2012-07-19 10:37:05