2012-08-30 52 views

回答

3

您可以在服務器端使用客戶端信號(disconnect())來接收狀態改變信號。

例如:

在服務器端

connect(client, SIGNAL(disconnected()), this, SLOT(funcA())); 
//to recieve a signal immediately when client is shutdown 

connect(client, SIGNAL(connected()), this, SLOT(funcB())); 
// to recieve a signal immediately when client is connected 

希望這會幫助你。

+2

我在我的項目中實現了這個邏輯,它對我來說工作得非常好。 – skg

+0

在Qt生態系統的背景下,選擇使用信號/插槽機制是最好的處理方式。這種方法可以讓你的代碼更加友好和異步 – dusktreader

+0

@skg謝謝,我已經測試過它,它工作正常。 – Jichao

1

如果套接字的遠端已關閉,則它變得可讀,讀取它時您將收到零字節。從套接字讀取是檢測遠端是否已正常關閉的正確方法。

因此,要回答你的問題,我猜的stateChange信號將時立即遠端已經被關閉調用,因爲沒有辦法知道,直到你嘗試從套接字讀取的方式。