1
我有兩個不同的系統,一個在32位機器上運行,另一個在64位機器上運行。這些系統上的軟件是用C++編寫的,並且在Linux上使用各自的GNU編譯器進行編譯。我已經定義了通信接口協議,但在交換數據時遇到了一些問題。系統通過以太網連接。爲了確保系統通信沒有任何問題,是否需要對數據類型進行一些修改?32位和64位系統之間的通信
由於
我有兩個不同的系統,一個在32位機器上運行,另一個在64位機器上運行。這些系統上的軟件是用C++編寫的,並且在Linux上使用各自的GNU編譯器進行編譯。我已經定義了通信接口協議,但在交換數據時遇到了一些問題。系統通過以太網連接。爲了確保系統通信沒有任何問題,是否需要對數據類型進行一些修改?32位和64位系統之間的通信
由於
一般通過網絡進行通信時,協議定義不僅數據的大小,而且字節序(參見htons和ntohs和方法,例如)。 一個簡單的方法可能是使用Google協議緩衝區等數據序列化數據,這將使平臺大小無關。
我在網絡上發送之前使用htons和ntohs。我會檢查谷歌協議緩衝區,看看它是否可以幫助我 – Maverick
這取決於你的協議是如何設計和實現的。數據的格式如何?沒有更多的細節,你的問題是無法回答的。 – Jesper
如果您的協議正確表示數據,這應該是可能的。因此可能是你的協議。 – dornhege
'#include'並且構建您的協議是該文件中具有定義大小的類型,而不管基礎平臺如何。我認爲兩者之間的填充也可能不同,這也是值得注意的。 –
Chad