【发布时间】:2013-07-20 04:30:43
【问题描述】:
我是 QT 编程的新手。现在我有一个项目,它将数据从 Android 手机传输到运行 QT 套接字服务器的本地计算机。我的问题是我知道如何序列化一个对象并将其从 Android 手机发送出去,但我不知道如何在 QT 端接收它。任何帮助都会对我有很大帮助,谢谢!
部分代码如下: 安卓代码:
public void SendDataToNetwork(Infor std_infor) throws IOException { //You run this from the main thread.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(std_infor);
oos.close();
byte[] bytes = baos.toByteArray();
try {
if (nsocket.isConnected()) {
nos.write(bytes);
} else {
Log.i("AsyncTask", "SendDataToNetwork: Cannot send message. Socket is closed");
}
} catch (Exception e) {
Log.i("AsyncTask", "SendDataToNetwork: Message send failed. Caught an exception");
}
}
}
std_infor 是一个包含四个字符串变量的对象。
Qt 服务器:
void MainWindow::startRead()
{
char* rec = new char[client->readBufferSize()];
qDebug()<<client->readBufferSize();
QByteArray data = client->readAll();
qDebug()<<data;
}
【问题讨论】:
-
您需要使用 JSON 或 XML 之类的东西来序列化和反序列化您的对象;它在字节级别或苗条级别上工作的机会。