クライアントが Android エミュレーター (Eclipse + ADP + SDK android-15 を実行) と C++ のサーバー (Visual Studio 2010) で動作している tcp ソケットを介して protobufs を通信する際に問題が発生しています。 .1
.proto
package pck;
option java_package = "my.messages.package";
option java_outer_classname = "ClassName";
option optimize_for = LITE_RUNTIME;
message msg_name {
optional int32 VARIABLE = 6;
//moro...
}
クライアント: アンドロイド側
msg_name outMsg = to_send.build();
ByteArrayOutputStream output = new ByteArrayOutputStream();
outMsg.writeTo(output);
//now output.toString() is sent via tcp socket...
私が得たものと、ここで質問している理由は次のとおりです。通信は機能し、メッセージはサーバーエンドポイントに到達しますが、int32 変数の値は次のとおりです。
(Android で送信される値 ->> Visual-C++ 側で読み取られる値)
- Android: [0, 127] ->> visual-c++: [0, 127] 正常に動作します。
- アンドロイド: [128, 255] -->> ビジュアル-c++: 3104751
- アンドロイド: [256, 383] -->> ビジュアル-c++: 5201903
- ...
それで、それはエンコーディングの問題ですか?client-android 側の protobufs に問題がありますか? (私はそれがアンドロイドでの私の最初の日だと言わなければなりません、opss!)