Problem mit QTcpSocket
Verfasst: 29. Januar 2007 11:11
Hallo Leute,
ich habe ein Problem mit QTcpSocket.
Den Verbindungsaufbau habe ich anscheinend hinbekommen, aber dann läuft das Ganze in eine Fehlermeldung.
Hier erstmal mein Quellcode:
Die Funktionen sind alle public slots und nextBlockSize und tcpsocket sind Membervariablen.
Die entsprechenden connect Aufrufe habe ich auch gemacht.
An der Stelle
bekomme ich dann immer die Meldung "Unknown error".
Kann mir jemand sagen was ich falsch mache?
Gruß,
SuperSonik
ich habe ein Problem mit QTcpSocket.
Den Verbindungsaufbau habe ich anscheinend hinbekommen, aber dann läuft das Ganze in eine Fehlermeldung.
Hier erstmal mein Quellcode:
Code: Alles auswählen
void connectToServer(void){
pushButton_abfragen->setText(tr("Abfragen 2......"));
tcpsocket.connectToHost(lineEdit_ipgypsy->text(),5050);
pushButton_abfragen->setText(tr("Abfragen ......"));
pushButton_upload->setEnabled(false);
pushButton_abfragen->setEnabled(false);
};//connectToServer
void sendRequest(void){
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_2);
QString abfrage("SELECT * FROM Historie; \r\n");
out << quint16(0) << abfrage.toAscii();
out.device()->seek(0);
out << quint16(block.size() - sizeof(quint16));
tcpsocket.write(block);
pushButton_abfragen->setText(tcpsocket.errorString());
};//sendRequest
void getData(void){
pushButton_abfragen->setText(tr("Abfragen 2......"));
pushButton_abfragen->setText(tcpsocket.errorString()+" --1");
QFile confdatei("testdata.txt");
confdatei.open(QIODevice::WriteOnly);
QDataStream conf(&confdatei);
QByteArray ip,wert,datum;
conf.setVersion(QDataStream::Qt_4_2);
//pushButton_abfragen->setText(tcpsocket.errorString()+" --2");
QDataStream in(&tcpsocket);
in.setVersion(QDataStream::Qt_4_2);
//pushButton_abfragen->setText(tcpsocket.errorString()+" --3");
forever{
if(nextBlockSize == 0){
if(tcpsocket.bytesAvailable() < sizeof(quint16)){ break; }
in >> nextBlockSize;
}
if(nextBlockSize == 0xFFFF){
closeConnection();
break;
}
if(tcpsocket.bytesAvailable() < nextBlockSize){ break;}
conf << tcpsocket.readAll();//ip << wert << datum;
nextBlockSize = 0;
}
};//getData
void closeConnection(void){
tcpsocket.close();
pushButton_abfragen->setText(tr("Daten abfragen"));
pushButton_upload->setEnabled(true);
pushButton_abfragen->setEnabled(true);
};//closeConnection
void displayError(QAbstractSocket::SocketError socketError)
{
switch (socketError) {
case QAbstractSocket::RemoteHostClosedError:
break;
case QAbstractSocket::HostNotFoundError:
QMessageBox::information(this, tr("Fortune Client"),
tr("The host was not found. Please check the "
"host name and port settings."));
pushButton_abfragen->setText(tr("Daten abfragen"));
pushButton_upload->setEnabled(true);
pushButton_abfragen->setEnabled(true);
break;
case QAbstractSocket::ConnectionRefusedError:
QMessageBox::information(this, tr("Fortune Client"),
tr("The connection was refused by the peer. "
"Make sure the fortune server is running, "
"and check that the host name and port "
"settings are correct."));
pushButton_abfragen->setText(tr("Daten abfragen"));
pushButton_upload->setEnabled(true);
pushButton_abfragen->setEnabled(true);
break;
default:
QMessageBox::information(this, tr("Fortune Client"),
tr("The following error occurred: %1.")
.arg(tcpsocket.errorString()));
pushButton_abfragen->setText(tr("Daten abfragen"));
pushButton_upload->setEnabled(true);
pushButton_abfragen->setEnabled(true);
}
}
Die entsprechenden connect Aufrufe habe ich auch gemacht.
An der Stelle
Code: Alles auswählen
pushButton_abfragen->setText(tcpsocket.errorString()+" --1");Kann mir jemand sagen was ich falsch mache?
Gruß,
SuperSonik