[Qt/C++] Netzwerk Problem



  • Hallo,

    ich bin ein relativer Neuling in Qt, komm aber schon ganz gut zu Recht. Nur hab ich jetzt ein Problem, welches ich mir nicht erklären kann.
    Erstmal der Quellcode:
    server.cpp

    ...
    connect(client, SIGNAL(readyRead()), this, SLOT(readMessage()));
    ...
    void server::acceptConnection()
    {
        client = server->nextPendingConnection(); // Client = QTcpSocket
        // server = QTcpServer
        lastActions->append("Client connected"); // QTextEdit
        connect(client, SIGNAL(error(QAbstractSocket::SocketError)), this, \
                SLOT(displayError(QAbstractSocket::SocketError)));
        connect(client, SIGNAL(disconnected()), client, SLOT(deleteLater()));
        // Senden
        QByteArray block;
        QDataStream out(&block, QIODevice::WriteOnly);
        out << "Hello World\n";
    
        client->write(block);
        client->disconnectFromHost();
    }
    

    client.cpp

    void client::readMessage()
    {
        blockSize = 0; // quint16
        lblErrorInfo->setText("reading"); // QLabel*
        client->connectToHost("localhost", 15000);
        QDataStream in(client);
        if( blockSize == 0 )
        {
            if( client->bytesAvailable() < (int)sizeof(quint16) )
            {
                return;
            }
            in >> blockSize;
        }
        if(client->bytesAvailable() < blockSize)
        {
            return;
        }
        in >> msg;
        lblMsgInfo->setText(msg); // QLabel*
    }
    

    Ich hab den Quellcode mal auf das geringste gekürzt und Kommentare gestzt um die Deklaration wegzulassen, da hier vermutlich niemand sehen will wie meine main.cpp aussieht.
    Nun zu meinem Problem:
    Der Server funktioniert einwandfrei, heißt wenn ich via "telnet localhost 15000" connecte liefert er mir "Hallo Welt" und beendet sich. Wenn ich allerdings versuche mit meinem Client darauf zuzugreifen passiert nichts.
    Ich weiß echt nicht mehr weiter, vor allem weil ich den Code fast 1 zu 1 aus dem Qt-Assistant Beispiel habe.

    Hoffe ihr könnt mir helfen
    Bastelking


  • Mod

    Bei wie weit (Zeilennummer) kommt den dein Client?



  • Im Code vom Server ist mir ein Fehler unter laufen der Part

    ...
    connect(client, SIGNAL(readyRead()), this, SLOT(readMessage()));
    ...
    

    gehört in den Konstruktor vom Clienten. Wollte aber kein Doppelpost machen um das zu berichtigen.
    Und sonst sind die Dateien völlig unabhängig von einander.
    Hoffe ich hab deine Frage richtig verstanden. Falls ich noch mehr Code posten soll, müsst ihr das nur sagen.


Anmelden zum Antworten