Я использую 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:
Я не знаю, что я делаю неправильно. Как я могу сделать эту работу?