2016-05-27 32 views
0

QDataStreamを使用して構造体をシリアル化し、UDPでこれを送信すると、Qtなしでデシリアライズすることは可能ですか?Qtでシリアライズ、Qtなしでデシリアライズしますか?

+0

はい。あなたが書式を知っている限り。 –

+0

@MohamadElghawi確かに、senderAppは、UDPを介してシリアル化された構造体を送信します。私のReceiverAppは、私の構造体の.hを持ちます。 –

+0

これで問題ありません。異なるプラットフォーム/コンパイラではデータ型が異なるサイズを持つことがあるので、サイズが保証されている型を使用する方が望ましいことに留意してください。また、送受信機のエンディアンを覚えておいてください。私は他の多くのことを忘れていますが、それを試して何が起こるかを見ています。 QDataStreamは、あなたが両側でそれを使用するように特別な何もしません。 –

答えて

3

Qtライブラリを使用せずにデシリアライズする場合は、簡潔にhereで記述されているQtシリアル化フォーマットを読んで、デシリアライズコードを自分で記述する必要があります。この形式は変更される可能性が高いため、シリアライズアプリケーションでsetVersionを使用し、受信者にシリアル化コードを実装できるバージョンを使用する必要があります。

長時間かかる可能性がありますので、浮動小数点数のシリアル化で使用されるstandard IEEE 754 formatなどのプリミティブのデシリアライズを実装すると、多くのエラーが発生する可能性があります。デバイス間でのエンディアンの違いなどがあります。 。

なぜ、車輪を再発明するのですか?受信機でQtを使いたくない場合は、共通のシリアル化フォーマットを使用できます。例えば、JSONは多くのプログラミング言語で広くサポートされており、supported in Qtです。 JSONについて何か気に入らない場合は、lots of data serialization formatsから選択してください。

関連する問題