我是QT編程的新手。現在我有一個項目可以將數據從Android手機傳輸到本地計算機並運行QT套接字服務器。我的問題是我知道如何序列化一個對象並從Android手機發送出去,但我不知道如何在QT端接收它。任何幫助對我都很好,謝謝!代碼的如何在Android和QT之間使用TCP套接字傳輸對象?
部分列出如下: 的Android代碼:
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的序列化和反序列化對象;它有可能在字節級或者細長級上工作。 – 323go