1

私はQTプログラミングの初心者です。これで、Android フォンから QT ソケット サーバーが実行されているローカル コンピューターにデータを転送する 1 つのプロジェクトができました。私の問題は、オブジェクトをシリアル化して Android フォンから送信する方法を知っていますが、QT エンドでそれを受信する方法がわかりません。どんな助けでも私にとって素晴らしいでしょう、ありがとう!

コードの一部を以下に示します: 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 は、4 つの文字列変数を持つオブジェクトです。

Qt サーバー:

void MainWindow::startRead()
{
char* rec = new char[client->readBufferSize()];
qDebug()<<client->readBufferSize();
QByteArray data = client->readAll();
qDebug()<<data;
}
4

2 に答える 2

1

私のプロジェクトでは、Qt アプリケーションとブラウザ拡張機能 (Firefox および Chrome 拡張機能) の間でオブジェクトを転送する同じことを行いました。システムの仕組みは次のとおりです。

Qt の最後に: QHttpServerというオープン ソース プロジェクトを使用して、Http サーバーを実装し、定義済みのポートをリッスンします。A simple HTTP Serverをチェックして、実際の仕事に取り掛かる前に QTcpServer がどのように機能するかを確認することもできます。

拡張機能では、XmlHttpRequest を使用して、事前定義されたポートにメッセージを送受信します (セキュリティのためにメッセージを暗号化/復号化する必要があります)。XHR はシンプルで、AFAIK Android もサポートしています。

また、JSON を使用してオブジェクトをシリアル化/逆シリアル化することをお勧めします。

詳細が必要な場合は、「Qt Http Server」をグーグルで検索できます。

于 2013-07-21T02:23:41.467 に答える
0

まず第一に、try やその他の例外ハンドラを Qt と組み合わせて使用​​しないでください。

何をしたいのかわかりませんが、おそらくQDataStreamのようなものを探しているでしょう。QByteArrayと組み合わせて、クライアントまたはサーバーに送信できるデータ パッケージを作成できます。

送信者:

QByteArray buffer;
QDataStream out(&buffer);
out << someData << someMoreData;

レシーバー:

QByteArray buffer;
QDataStream in(&buffer);
in >> someData >> someMoreData;
于 2013-07-20T20:31:21.480 に答える