Es scheint das Visual Studio im Debug-Modus die Connects nicht sauber ausführt. Im Release-Modus geht es wunderbar.
Guten Tag zusammen
Ich habe (wieder) mal ein Problem mit einem Connect und ich verstehe absolut nicht warum ich dieses Problem habe.
Problem:
SIGNAL(readyRead())
SIGNAL(error(QAbstractSocket::SocketError))
Werden ignoriert und melden sich nicht mehr, daher QTcpSocket looped vor sich hin ohne Ergebniss.
connect:
Code: Alles auswählen
tcpSocket = new QTcpSocket(this);
connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(readAnswer()));
connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(displayError(QAbstractSocket::SocketError)));
header:
Code: Alles auswählen
private slots:
void tcpConnect();
void createNewAccount();
void login();
void readAnswer();
void displayError(QAbstractSocket::SocketError socketError);
Ich habe mir einen "Test-Kopf" gemacht und auch mit connect an tcpConnect() gebunden. Dieser Connect geht wunderbar.
Ich habe das Beispiel vom Fortune-Client genommen und es abgeleitet.
Statt der Vererbung von QDialog, nahm ich QWidget. Der Rest wurde dem Beispiel entnommen.
Anbei habe ich noch die Dateien angehängt.
Es handelt sich um QT4 welches unter Visual Studio kompliert wurde. Alle nötigen Abhängigkeiten sind eingebunden und werden vom Linker sauber erkannt.
Daher eine Meldung müsste ich bekomme, da eines der Beiden aufgerufen werden muss.As a result of calling connectToHost(), one of two things can happen:
The connection is established. In this case, the server will send us a fortune. QTcpSocket will emit readyRead() every time it receives a block of data.
An error occurs. We need to inform the user if the connection failed or was broken. In this case, QTcpSocket will emit error(), and Client::displayError() will be called.
Gruss und Danke für Hinweise
gwydion