Qt bidirectionnel client-serveur à l'aide de QTcpSocket et QTcpServer

Je suis en train de mettre en œuvre une bidirectionnel programme client-serveur, où les clients et les serveurs peuvent passer d'objets sérialisés entre l'un de l'autre. Je suis en train de faire cela à l'aide de Qt (QTcpSocket et QTcpServer). J'ai mis en œuvre de tels programmes en java, mais je ne peux pas comprendre comment le faire en utilisant Qt. J'ai vérifié le la fortune du client et fortune serveur exemples...mais de ce que je peux voir, le client est tout simplement de signalisation le serveur, et le serveur envoie des données. J'ai besoin pour le client et le serveur pour envoyer les objets d'avant en arrière. Je ne suis pas à la recherche d'une solution complète, tout ce que je cherche, c'est une certaine orientation dans la bonne direction.

J'ai écrit du code, qui accepte une connexion, mais ne pas accepter les données.

SERVEUR

cette classe est le serveur; il devrait accepter une connexion et à la sortie de la taille de la mémoire tampon qui est envoyé. Cependant, il est sortie 0

#include "comms.h"

Comms::Comms(QString hostIP, quint16 hostPort)
{
    server = new QTcpServer(this);
    hostAddress.setAddress(hostIP);
    this->hostPort = hostPort;


}

void Comms::attemptConnection(){
    connect(server, SIGNAL(newConnection()), this, SLOT(connectionAccepted()));
    //socket = server->nextPendingConnection();
    server->listen(hostAddress,hostPort);
    //receivedData = socket->readAll();
}

void Comms::connectionAccepted(){
    qDebug()<<"Connected";
    socket = new QTcpSocket(server->nextPendingConnection());

    char* rec = new char[socket->readBufferSize()];
    qDebug()<<socket->readBufferSize();
}

CLIENT

Cette classe est la classe client. Il convient de l'envoi de la chaîne de caractères "bonjour". Il l'envoie avec succès (à ma connaissance)

#include "toplevelcomms.h"
#include "stdio.h"

TopLevelComms::TopLevelComms(QString hostIP, quint16 hostPort)
{
    tcpSocket = new QTcpSocket();
    hostAddress.setAddress(hostIP);
    this->hostPort = hostPort;
}


void TopLevelComms::connect(){
    tcpSocket->connectToHost(hostAddress,hostPort,QIODevice::ReadWrite);
    //tcpSocket->waitForConnected(1);

    QString string = "Hello";
    QByteArray array;
    array.append(string);
    qDebug()<<tcpSocket->write(array);
}

S'il vous plaît dites-moi ce que je fais mal, ou me dire la logique générale de l'établissement de ce que je veux dans Qt.

OriginalL'auteur PTBG | 2012-01-18