我是網絡編程的新手,所以我有一個問題:在我的C++和C#之間發送一個整數是否安全(因爲32有「endianess」問題)去做?通過網絡傳輸int
在我的程序中,我將int轉換爲char(我知道它低於255)併發送它。不過,我想發32 int。我嘗試了使用協議緩衝區的行爲。我使用C++中的WriteVarint32和C#中的ProtoReader.ReadUInt32,但沒有成功(C#中的例外)。我認爲它會工作後,我讀this。
你會如此善良,並建議我在C++和C#應用程序之間發送一個整數的正確方法嗎?如果你向我解釋如何用協議緩衝區(在C#的情況下爲protobuf-net)做到這一點,我會非常高興。
那麼爲什麼16bit沒有endianness和32bit的問題呢? bigendian/littleendian機器的16位數據將會有所不同。我建議你決定一種方法(例如協議緩衝區)並嘗試一下,並詢問你得到的問題。 – 2011-06-04 09:55:41
@David varint編碼工作在endianness周圍(這是隱含的) – 2011-06-04 11:57:09