QTcpSocket stateChanged适合心跳检查吗?

时间:2012-08-30 09:57:57

标签: c++ qt networking

如果客户端已关闭,QTcpSocket是否会立即收到stateChanged信号?

2 个答案:

答案 0 :(得分:3)

您可以在服务器端使用客户端信号(disconnected())来接收状态更改信号。

例如:

在服务器端

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

希望这会对你有所帮助。

答案 1 :(得分:1)

如果套接字的远端已经关闭,它就变得可读,当从它读取时,你将收到零字节。从套接字读取是检测远程端是否已正常关闭的正确方法。

所以为了回答你的问题,我猜测当远程端关闭时,stateChange信号将立即被调用,因为直到你试着从插座中读取。