我正在使用QTcpsocket和QtcpServer来实现客户端服务器resp。我的客户端程序等待直到服务器启动并连接它。我想重新连接服务器,当服务器连接后关闭,但上面的代码给出了奇怪的行为,它创建了很多服务器实例,我的程序挂起了。请给出建议来实现我的目标,并请解释什么是下面代码中的问题,它是一个插槽,在客户端程序中,用disconnected()信号连接。
void TcpClient::connectionClosedByServer()
{
ui->lStatus->setText(tr("Error: Connection closed by server"));
closeConnection();
while(tcpSocket->state()!=QAbstractSocket::ConnectedState)
{
tcpSocket->abort();
tcpSocket->connectToHost(QHostAddress::LocalHost,6015);
sleep(6);
}
}
答案 0 :(得分:2)
而不是sleep(6)
尝试使用tcpSocket->waitForConnected(6000)
,否则您的连接请求将永远不会超时。