QTcpSocket 写入数据结构

QTcpSocket write an struct of data

本文关键字:数据结构 QTcpSocket      更新时间:2023-10-16

我曾经发送一个带有C++套接字的结构,现在我尝试使用 QTcpSockets。这是结构:

const unsigned int uiMessageSize = 4;
    typedef struct {
        unsigned char uc_stx;
        unsigned char uc_add;
        unsigned char uc_state;
        unsigned char uc_eot;
        unsigned char uc_unused_padding[1024];
    } st_message;

所以,对于写作,我曾经称之为write(sockfd, &messageToSend, uiMessagePcToMastSize);

现在我正在尝试使用:socket->write(&messageToSend, uiMessagePcToMastSize);并且不起作用:没有匹配函数来调用'QTcpSocket::write(mastControl::st_messagePcToMast*,const unsigned int&)。

我已经搜索了更多信息,看起来我应该将结构转换为QDataStrem,或者只是一个QByteArray。我真的不知道如何解决这个问题。

有什么帮助吗?

文档显示写入函数重载,qint64 QIODevice::write ( const char * data, qint64 maxSize ) 1 个函数,因此转换为 const char* 应该就足够了。

只需添加一个 toQBytearray 并在结构中添加一个构造函数,您将字节数组拆分为转换数据的结构。放置一个拆分值,例如 # 或 ;在数据集之间以及当您在服务器上接收数据时,只需使用上面提到的构造函数