c++ - 在 Qt 中确定 TCP 套接字上的数据类型

标签 c++ qt sockets tcp

我正在编写一个程序,通过 TCP 连接发送从 OpenCV 窗口捕获的图像,使用 Qt 库设置连接等。

我必须使用函数(如下)来发送文本或字节数组。我遇到的问题是在另一端如何判断传入的数据是纯文本还是包含图像的数组。是否有内置的方法来执行此操作,或者我是否需要在数据的开头放置一个字节以告诉接收方即将到来的数据?我已经将数组长度放在序列化图像数据的开头。

void Screenshot_controller::sendText(std::string textToSend)
{
    if(connectionMade)
    {
        std::string endLine = "\r\n";
        textToSend = textToSend + endLine;
        const char * textChar = textToSend.c_str();
        sendSocket->write(textChar);
        sendSocket->flush();
        qDebug() << "Text Sent from Server";
    }
}

void Screenshot_controller::sendData(QByteArray dataToSend)
{
    if(connectionMade)
    {
        sendSocket->write(dataToSend);
        sendSocket->flush();
        qDebug() << "Data Sent from Server";
    }
}

最佳答案

您需要自己定义协议(protocol),无论是使用字节、字符串、JSON header 还是任何其他方法。 Tcp 套接字将允许您传输数据,但不关心数据是什么;由您来处理。

关于c++ - 在 Qt 中确定 TCP 套接字上的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27152695/

相关文章:

c++ - 使用包含OpenCV的cmake构建MacOS可执行文件进行分发

c++ - 基于 calcOpticalFlowFarneback 的 OpenCV 变形图像

c++ - 在 Qt 中混合两个不同的图像

c++ - 将 QXmlItem 转换为 QtDomElement 或类似的?

c++ - 在#include 预处理器命令中使用 qmake 变量

python - 如何在 python asyncio 中处理 tcp 客户端套接字自动重新连接?

c++ - 返回值 int&

c++ - 无法将套接字对象移动到 std::vector

C - 套接字聊天室 - 客户端接收连续消息

C++ - 派生类 - 错误 : expected primary expression before'int'