如果客户端已关闭,QTcpSocket是否会立即收到stateChanged信号?
答案 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
信号将不立即被调用,因为直到你试着从插座中读取。