Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用QTcpSocket读取完整数据(Qt4.7)_C++_Qt_Tcpserver_Qt4.7 - Fatal编程技术网

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

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

为了从客户端接收数据,我创建了一个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;
}


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我将继续我的编程工作,知道吗当我知道我在说什么的时候,再来找你,谢谢!