2012-08-30 106 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信号将时立即远端已经被关闭调用,因为没有办法知道,直到你尝试从套接字读取的方式。