Qt двунаправленный клиент-сервер с использованием QTcpSocket и QTcpServer

Я пытаюсь реализовать двунаправленную программу клиент-сервер, в которой клиенты и серверы могут передавать друг другу сериализованные объекты. Я пытаюсь сделать это, используя Qt (QTcpSocket и QTcpServer). Я реализовывал подобные программы на java, но не могу понять, как это сделать с помощью Qt. Я просмотрел примеры fortune client и fortune server... но из того, что я вижу, клиент просто подает сигнал серверу, а сервер посылает ему некоторые данные. Мне нужно, чтобы клиент и сервер посылали объекты туда и обратно. Я не ищу готового решения, все, что мне нужно, это подсказка в правильном направлении".

Я написал код, который принимает соединение, но не принимает данные.

SERVER

этот класс является сервером; он должен принимать соединение и выводить размер буфера, который отправляется. Однако он выводит 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()<readBufferSize();
}

CLIENT

Этот класс является клиентом. Он должен отправить строку 'hello'. Он отправляет ее успешно (насколько мне известно)

#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()<write(array);
}

Пожалуйста, скажите мне, что я делаю неправильно, или расскажите мне общую логику создания того, что я хочу в Qt.

10
задан PTBG 18 January 2012 в 21:10
поделиться