/ / QTcpSocket, espere el servidor - qt

QTcpSocket, espere el servidor - qt

Estoy haciendo simple programa de servidor de cliente usandoQTcpServer, QTcpSocket sin utilizar hilo, en fedora. Quiero que mi aplicación, independientemente de la secuencia de lo que se ejecuta primero, cliente o servidor. Mi aplicación se ejecute bien cuando inicio el servidor primero, pero no obtengo ninguna forma de hacer que el cliente espere, mientras que el servidor no se inicia y se conecta con servir como servidor de inicio. Utilicé waitForConnection () pero no está ayudando. Por favor, dar algunas sugerencias.

TcpClient::TcpClient(QWidget *parent) : QMainWindow(parent),
ui(new Ui::TcpClient)

{
ui->setupUi(this);
tcpSocket= new QTcpSocket(this);
tcpSocket->connectToHost(QHostAddress::LocalHost,6178);
connect(tcpSocket, SIGNAL(connected()), this, SLOT(sendRequest()));
connect(tcpSocket, SIGNAL(disconnected()),this, SLOT(connectionClosedByServer()));
connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)),this, SLOT(error()));
.
.
..

}

void TcpClient::error()

{
ui->lStatus->setText(tcpSocket->errorString());
closeConnection();
tcpSocket->connectToHost(QHostAddress::LocalHost,6178);
}

Respuestas

2 para la respuesta № 1

En el cliente, usarconnectToHost(). Escucha a hostFound() o connected() para el éxito, y error() Por el fracaso. En caso de fallo, intente conectarse de nuevo (tal vez después de 1 a 10 segundos, usando QTimer::singleShot().)

Esto permitirá que el resto de su aplicación se siga ejecutando mientras se realizan los intentos de conexión.


0 para la respuesta № 2

La simple llamada de connectToHost desde una ranura conectada a error () no funciona para mí sin la opción de conexión Qt :: QueuedConnection. Ver post por Jonas Mauricio Gastal QTcpSocket se reconecta después de que la conexión se perdió, permanezca en ConnectingState. Lo siento por mi ingles.