C++ 如何使用QTcpSocket读取完整数据(Qt4.7)
为了从客户端接收数据,我创建了一个TcpServer。客户发送了很多信息,我想阅读它们。到目前为止,我的TcpServer.cpp如下所示:C++ 如何使用QTcpSocket读取完整数据(Qt4.7),c++,qt,tcpserver,qt4.7,C++,Qt,Tcpserver,Qt4.7,为了从客户端接收数据,我创建了一个TcpServer。客户发送了很多信息,我想阅读它们。到目前为止,我的TcpServer.cpp如下所示: void TcpServer::serverStart() { server = new QTcpServer(this); if (!server->listen(QHostAddress("192.168.x.x"), 48583)) { qDebug() << "Not listening
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;
}
void TcpServer::serverStart()
{
服务器=新的QTcpServer(此);
如果(!server->listen(QHostAddress(“192.168.x.x”),48583))
{
qDebug()关闭();
删除服务器;
返回;
}
否则{
qDebug()nextPendingConnection();
qDebug()字节可用()
{
append(socket->readAll());
}
qDebug()关闭();
删除服务器;
}
我知道我的getData函数需要更多才能接收所有内容,但我不知道需要执行哪些步骤。如果有人能给我一些建议,我将不胜感激!TCP是一种面向流的传输协议。将其想象为一个连续的数据流。TCP尚未定义任何消息,因为这也是一个连续的数据流
我从你的评论中得知,你没有使用任何应用层协议。你需要一个应用层协议,比如http,然后定义“消息”TCP是一种面向流的传输协议。假设它是一个连续的数据流。TCP还没有定义任何消息,因为它再次是一个连续的数据流
我从你的评论中得知,你没有使用任何应用层协议。你需要一个应用层协议,比如http,然后定义“消息”以及如何阅读完整消息的进一步说明。除了tcp,您使用的是什么,您的应用层协议是什么?也是tcp!我有两个应用程序App1和App2通过tcp相互发送消息,我尝试在这两个应用程序之间创建一个工具来读取来自App1的消息,并对其进行一些处理d然后将其发送到App2。该注释不会回答“您的应用层协议是什么?”。您必须在TCP之上执行某些操作,例如根据某种格式/规范交换一些结构化消息。这就是@ezegong所要求的。TCP只是传输协议,您的应用程序必须在“按发送顺序到达的字节”(这是TCP提供给您的全部信息)之上执行其他操作。哦,很抱歉,我是一名编程初学者,我没有太多关于消息的信息,但它们是以头的形式构造的,包含字节,我尝试只读取头。我不知道这是否回答了你的问题?是的,我现在知道,但这是我实习期间正在进行的项目:/I我将继续我的编程工作,知道吗ledge和skills,等我知道我在说什么时再回来,谢谢!你在tcp上使用的是什么,你的应用层协议是什么?还有tcp!我有两个应用程序App1和App2通过tcp互相发送消息,我尝试在这两个应用程序之间创建一个工具来读取来自App1的消息,这样做吧请让我处理它,然后将其发送到App2。该注释不会回答“您的应用层协议是什么?”。您必须在TCP之上执行某些操作,例如根据某种格式/规范交换一些结构化消息。这就是@ezegong所要求的。TCP只是传输协议,您的应用程序必须在“按发送顺序到达的字节”(这是TCP提供给您的全部信息)之上执行其他操作。哦,很抱歉,我是一名编程初学者,我没有太多关于消息的信息,但它们是以头的形式构造的,包含字节,我尝试只读取头。我不知道这是否回答了你的问题?是的,我现在知道,但这是我实习期间正在进行的项目:/I我将继续我的编程工作,知道吗当我知道我在说什么的时候,再来找你,谢谢!