簡體   English   中英

如何使用 QTcpSocket (Qt4.7) 讀取完整數據

[英]How to read complete data using QTcpSocket (Qt4.7)

我創建了一個 TcpServer 以便從客戶端接收數據。 客戶端發送了很多消息,我想閱讀它們。 到目前為止,我的 TcpServer.cpp 看起來像這樣:



void TcpServer::serverStart()
{
    server = new QTcpServer(this);
    if (!server->listen(QHostAddress("192.168.x.x"), 48583))
    {
        qDebug() << "Not listening";
        server->close();
        delete server;
        return;
    }
    else {
        qDebug() << "Listening";
    }

connect(server, SIGNAL(newConnection()), this, SLOT(newConnection()));


}



void TcpServer::newConnection()
{

    socket = server->nextPendingConnection();
    qDebug() << "Client connected";

    connect(socket, SIGNAL(readyRead()), this, SLOT(getData()));
    connect(socket, SIGNAL(disconnected()), socket, SLOT(deleteLater()));
}


void TcpServer::getData()
{

QByteArray buffer;

while (socket->bytesAvailable())
    {
        buffer.append(socket->readAll());
       }
qDebug() << buffer;
    }




void TcpServer::serverStop()
{
    server->close();
    delete server;
}

我知道我的 getData 函數需要更多才能接收所有內容,但我不明白這樣做所需的步驟。如果有人能給我一些指點,我將不勝感激!

TCP是一種面向流的傳輸協議。 把它想象成一個連續的數據流。 TCP 還沒有定義消息,因為它又是一個連續的數據流。

我從您的評論中得知您沒有使用任何應用層協議。 您需要一個應用層協議,例如 http,然后定義“消息”並為您提供有關如何閱讀完整消息的進一步說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM