根據協議緩衝區api,如果格式錯誤,ParseFromArray(const void * data, int size)
將失敗,在我的情況下,當size
參數不正確時返回false。很多回答指出,在使用SerializeToArray(void * data, int size)
時應該使用ByteSize()
,並且確保解析正確的大小,但是沒有一個明確指出。那麼如何將ByteSize()
值傳遞給服務器端以確保ParseFromArray不返回false?當我使用協議緩衝區時,如何知道服務器端的ByteSize()?
據我所知,我發現的所有例子都使size
參數成爲接收緩衝區的全部大小,並且根本沒有檢查返回值,因爲字段將以任何方式解析。這是一個好主意,不要選中返回值嗎?
協議緩衝區格式不是自行分隔的。這是由一個更高層次的協議來決定一個protobuf結束和另一個開始的地方。由您來定義所述更高級別的協議。 –