因此,在過去的幾周裏,我一直在學習非常簡單的網絡編程和協議緩衝區。現在,我有一個Java客戶端和一個使用協議緩衝區來回傳輸的C#服務器。這一切工作正常,但爲了使它在客戶端(Java)端工作,我必須創建具有傳入消息的確切大小的字節數組,否則解析器會拋出「協議消息包含無效標記(零)「Java協議緩衝區 - 消息大小
經過一番研究,我發現我爲DatagramPacket創建的數組(1024bytes)有大量的尾隨零(因爲我從服務器接收到的數據長度是27bytes),這就是爲什麼我現在,如前所述,必須創建具有確切大小的傳入數據的陣列。
至於這個問題,有沒有什麼方法可以找到我的.proto文件中的所有「proto」消息的大小?如果沒有某種靜態的getSize(),有沒有一種方法可以根據「消息」中的字段類型來計算?
我現在使用的信息包含3個雙打,現在我正在考慮這個問題,但是我想知道發生了什麼的人肯定會回答,是因爲每個雙8bytes,每個消息字段上每個「標籤」1個字節?
您可以發送發送協議緩衝區消息之前的長度。 –