gpt4 book ai didi

c++ - 如何使用QTcpSocket(Qt4.7)读取完整数据

转载 作者:行者123 更新时间:2023-12-02 10:36:39 25 4
gpt4 key购买 nike

我创建了一个 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是一种面向流的传输协议(protocol)。把它想象成一个连续的数据流。 TCP 还没有定义消息,因为它又是一个连续的数据流。

我从您的评论中得知您没有使用任何应用层协议(protocol)。您需要一个应用层协议(protocol),例如http,然后定义“消息”并为您提供有关如何阅读完整消息的进一步说明。

关于c++ - 如何使用QTcpSocket(Qt4.7)读取完整数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59954023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com