QTcpSocket 写入数据结构
Posted
技术标签:
【中文标题】QTcpSocket 写入数据结构【英文标题】:QTcpSocket write an struct of data 【发布时间】:2012-05-03 09:00:29 【问题描述】:我曾经使用 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。我真的不知道如何处理这个问题。
有什么帮助吗?
【问题讨论】:
此链接可能会有所帮助,***.com/questions/2570679/serialization-with-qt 【参考方案1】:documentation 表明 write 函数重载,其中 1 个函数为 qint64 QIODevice::write ( const char * data, qint64 maxSize )
,因此转换为 const char*
就足够了。
【讨论】:
【参考方案2】:只需添加一个 toQBytearray 并在将字节数组拆分到转换数据的结构的结构中添加一个构造函数。放置一个拆分值,例如 # 或 ;在数据集之间,当您在服务器上收到数据时,只需使用上述构造函数
【讨论】:
以上是关于QTcpSocket 写入数据结构的主要内容,如果未能解决你的问题,请参考以下文章
当主线程无限循环运行时,服务器没有收到用 QTcpSocket::write 写入的字节?
QTcpSocket 在工作进程中连续写入。避免内存泄漏的最佳实践