我创建了一个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,然后定义“消息”,并为您提供有关如何阅读完整消息的进一步说明。