Java クライアントは、次のスケルトンに従ってメッセージを構築します。
package tutorial;
option java_package = "com.example.sff.piki2";
option java_outer_classname = "MsgProtos";
message MSG {
required string guid = 1;
required int32 MsgCode = 2;
required int32 From = 3; //sender
...
このメッセージは C# プログラム (サーバー側) に送信されます。
サーバーはバイトの読み取り方法を認識しています (最初のバイトは読み取るバイト数で、次のメッセージのサイズを表します)。
これは、MSG がバイト配列によって構築されている方法です。
MSG Msg = MSG.CreateBuilder().MergeFrom(buffer).Build();
buffer は、ソケットから読み取ったバイト配列です。
しかし今、サーバーが稼働しているかどうかを確認するために、クライアントが「ハートビート」メッセージ( 別のメッセージ)を送信する必要がある状況にあります。(サーバーは応答する必要があります: 「はい、私は生きています」 )
もちろん、MSG
クラスに別のフィールドを追加できます。MSG
しかし、クラスにはハートビート操作のために不要なフィールドがたくさんあるため、そうしたくありません。
質問 :
サーバーは n バイトを読み取りました。MSG
これがメッセージか「ハートビート」メッセージかを知ることができる方法はありますか?