我曾经用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。我真的不知道该怎么做。
任何帮助?
答案 0 :(得分:1)
documentation显示写函数被重载,其中1个函数为qint64 QIODevice::write ( const char * data, qint64 maxSize )
,因此转换为const char*
就足够了。
答案 1 :(得分:0)
只需添加一个toQBytearray并在struct中添加一个构造函数,将bytearray拆分为转换数据的struct。放一个splitvalue就像#或;在数据集之间以及在服务器上接收数据时,只需使用上面提到的构造函数