[英]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.