對於使用TCP的C/S網絡程序,我正在使用'protobuf'。protobuf是否需要網絡數據包頭?
這是我的步驟爲客戶端:
1,包數據變換成「的protobuf」
2,在包的字節得到尺寸和構造一個長度前綴幀
3,寫幀+打包到插座
然後服務器:
1,從套接字中讀取長度前綴幀並獲得長度N
2,讀取插槽N個字節,數據填充到protobuf的實例
3,獲得「價值」從protobuf的通過「鑰匙」šš
似乎有點複雜,我想,是有某種爲protobuf自動生成的長度前綴幀,那麼我不需要自己構造一個。或者我可以做什麼來使代碼更清潔?
你的問題含糊不清/不清楚。你使用TCP嗎? UDP? IP?或其他一些網絡協議?很難說什麼是protobuf。它是一個結構還是隻是一個數據blob?大多數C/S應用程序需要一些幫助來確定要發送或接收的數據的完整性。你需要更具體,並顯示代碼。 –
感謝您的建議,我會更加清楚。 'protobuf'特別指的是一個谷歌開源項目。 – Shawn