Hi,
I've a problem with using the QTcpSocket.
I ty to write a programm to interact with a database over tcp.
I have to use this way because the database is not normaly supported by Qt (it's TinySQL database).

Here are my code so far:
Qt Code:
  1. void connectToServer(void){
  2. pushButton_abfragen->setText(tr("Abfragen 2......"));
  3. tcpsocket.connectToHost(lineEdit_ipgypsy->text(),5050);
  4. pushButton_abfragen->setText(tr("Abfragen ......"));
  5. pushButton_upload->setEnabled(false);
  6. pushButton_abfragen->setEnabled(false);
  7.  
  8. };//connectToServer
  9.  
  10. void sendRequest(void){
  11.  
  12. QByteArray block;
  13. QDataStream out(&block, QIODevice::WriteOnly);
  14. out.setVersion(QDataStream::Qt_4_2);
  15. QString abfrage("SELECT * FROM Datum; \r\n");
  16.  
  17.  
  18. out << abfrage.toAscii();
  19. out.device()->seek(0);
  20. out << quint16(block.size() - sizeof(quint16));
  21. tcpsocket.write(block);
  22. pushButton_abfragen->setText(tcpsocket.errorString());
  23.  
  24. };//sendRequest
  25.  
  26. void getData(void){
  27. pushButton_abfragen->setText(tr("Abfragen 2......"));
  28. //pushButton_abfragen->setText(tcpsocket.errorString()+" --1");
  29.  
  30. QFile confdatei("testdata.txt");
  31. confdatei.open(QIODevice::WriteOnly);
  32. QDataStream conf(&confdatei);
  33. QByteArray ip,wert,datum;
  34. conf.setVersion(QDataStream::Qt_4_2);
  35.  
  36. //pushButton_abfragen->setText(tcpsocket.errorString()+" --2");
  37.  
  38. QDataStream in(&tcpsocket);
  39. in.setVersion(QDataStream::Qt_4_2);
  40.  
  41. //pushButton_abfragen->setText(tcpsocket.errorString()+" --3");
  42.  
  43. forever{
  44.  
  45. if(nextBlockSize == 0){
  46. if(tcpsocket.bytesAvailable() < sizeof(quint16)){ break; }
  47. in >> nextBlockSize;
  48. }
  49. if(nextBlockSize == 0xFFFF){
  50. closeConnection();
  51. break;
  52. }
  53. if(tcpsocket.bytesAvailable() < nextBlockSize){ break;}
  54.  
  55. conf << in;//ip << wert << datum;
  56.  
  57.  
  58. nextBlockSize = 0;
  59. }
  60.  
  61.  
  62.  
  63.  
  64.  
  65. };//getData
  66.  
  67. void closeConnection(void){
  68.  
  69. tcpsocket.close();
  70. pushButton_abfragen->setText(tr("Daten abfragen"));
  71. pushButton_upload->setEnabled(true);
  72. pushButton_abfragen->setEnabled(true);
  73.  
  74. };//closeConnection
  75.  
  76. void displayError(QAbstractSocket::SocketError socketError)
  77. {
  78. switch (socketError) {
  79. case QAbstractSocket::RemoteHostClosedError:
  80. break;
  81. case QAbstractSocket::HostNotFoundError:
  82. QMessageBox::information(this, tr("Fortune Client"),
  83. tr("The host was not found. Please check the "
  84. "host name and port settings."));
  85. pushButton_abfragen->setText(tr("Daten abfragen"));
  86. pushButton_upload->setEnabled(true);
  87. pushButton_abfragen->setEnabled(true);
  88. break;
  89. case QAbstractSocket::ConnectionRefusedError:
  90. QMessageBox::information(this, tr("Fortune Client"),
  91. tr("The connection was refused by the peer. "
  92. "Make sure the fortune server is running, "
  93. "and check that the host name and port "
  94. "settings are correct."));
  95. pushButton_abfragen->setText(tr("Daten abfragen"));
  96. pushButton_upload->setEnabled(true);
  97. pushButton_abfragen->setEnabled(true);
  98. break;
  99. default:
  100. QMessageBox::information(this, tr("Fortune Client"),
  101. tr("The following error occurred: %1.")
  102. .arg(tcpsocket.errorString()));
  103. pushButton_abfragen->setText(tr("Daten abfragen"));
  104. pushButton_upload->setEnabled(true);
  105. pushButton_abfragen->setEnabled(true);
  106. }
  107.  
  108.  
  109. }
To copy to clipboard, switch view to plain text mode 

tcpsocket and nextBlockSize are member variables. And all connect - calls are made.
I think the problem is the line:
Qt Code:
  1. QString abfrage("SELECT * FROM Datum; \r\n");
To copy to clipboard, switch view to plain text mode 
If I send this line the readyRead() signal is emitted, and then direkt the disconnected() signal in response. I never get a error by the displayError slot.
I thought the prolem is \r\n and I try to use \0 and single \n and so on.
But it is all the same.
So what's wrong? At the moment I have no idea what I can try out.
Greetings,
SuperSonik