【发布时间】:2013-11-26 19:26:21
【问题描述】:
我目前正在处理客户端-服务器连接。
客户端是用 Java 编写的,不使用在 Android 手机上运行的 QT,服务器是使用 Qt 框架 用 C++ 编写的。
客户端收到 QByteArrays、QStrings 和 QLists,但我不知道如何反序列化和解释传入的数据。
创建我必须在 java 客户端读取的数据包的 C++ 源代码如下所示:
QByteArray body;
QString string1, string2, string3;
QList<float> list;
qint8 recognitionCount;
QDataStream bodyStream(&body, QIODevice::WriteOnly);
bodyStream << recognitionCount;
bodyStream << string1.toUtf8()
<< string2.toUtf8()
<< string3.toUtf8()
<< list;
客户端和服务器之间的连接已启动并运行良好。例如,我了解如何读取服务器发送给我的整数。我也知道如何读取字节,但我应该如何处理这些字节?例如,如何将它们格式化为字符串?
谁能帮帮我?
非常感谢任何帮助!
【问题讨论】:
-
如何通过网络发送数据?
-
TCP 套接字和 DataInputStream
-
问题是你是如何序列化数据的。 QList 和 QByteArray 是类型,而不是协议/格式(我会考虑使用 XML 或 Json 之类的东西,除非你真的需要二进制格式)
-
所以如果你使用 QTcpSocket 和 DataInputStream 你已经知道客户端会收到什么,它不是 QByteArray 也不是 Qlist!你必须做逆运算来构建你的数据
-
我编辑了我的问题并添加了格式化数据包的 c++ 代码。我希望它现在更清楚。不幸的是,我必须使用这种二进制格式并且不能使用 XML 或 JSON。
标签: java c++ qt deserialization qbytearray