本文介紹了協議錯誤確定要反序列化的消息類型的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
使用協議Buf,我們可以定義消息并生成它們的類,每個類都知道如何序列化/反序列化為二進制。
假設我們已經定義了多個不同的消息,
并且我們從線路上獲得了一些byte[],我們如何確定要使用適當的類和反序列化的消息類型呢?
推薦答案
不能。協議緩沖區的有線格式不編碼消息類型,只編碼標記號和類型。
例如,以下協議的消息實例的wire格式將相同(顯然,字符串字段中的數據相同):
message Foo {
optional string foo_field = 1;
}
message Bar {
optional string field_contained_in_bar = 1;
}
如果僅設置了字符串字段,則以下消息的實例也可能具有相同的編碼:
message Baz {
optional string str = 1;
optional int32 num = 2;
}
您需要知道您期望接收的郵件類型。
請參考編碼示例in the documentation。
這篇關于協議錯誤確定要反序列化的消息類型的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,