не могу прочитать данные из QTcpSocket - PullRequest
1 голос
/ 19 декабря 2011

Я использую QTcpSocket, чтобы открыть соединение и получить данные. Но у меня проблемы с чтением данных из сокета.

// заголовочный файл

    class PeerWireClient : public QTcpSocket
{
    Q_OBJECT

public:

    PeerWireClient(QObject *parent = 0);

private slots:
    void readFromSocket();

private:

    qint64 socketBytesAvailable() const { return QTcpSocket::bytesAvailable(); }
    // Data waiting to be read/written
    QByteArray incomingBuf;
    QByteArray outgoingBuf;
};

// cpp file

PeerWireClient::PeerWireClient(QObject *parent) :
    QTcpSocket(parent)
{
    connect(this, SIGNAL(readyRead()), this, SLOT(readFromSocket()));
}

void PeerWireClient::readFromSocket(void)
{
    qint64 oldsize, size;
    qint64 readbytes = 0;

    oldsize = incomingBuf.size();
    size = socketBytesAvailable();
    if (size > 0) {
        incomingBuf.resize(oldsize + size);
        readbytes = read((incomingBuf.data()+oldsize), size);
        qDebug("%ld", readbytes); // 
        qDebug("data: %s", incomingBuf.constData());
    }
}

Если я попытаюсь отправить 281 байт данных с другой стороны, тогда функция чтения возвращает 281 байт, но в буфере нет данных.

Debug: 
281

data: 

Я не знаю, что я делаю неправильно. Как я могу сделать эту работу?

...