我想在C中定義一個用於網絡傳輸的結構,例如我想要傳遞一個Animal結構,其中包含一個可變長度的動物名稱。在C中定義網絡通信的結構
AFAIK,一種方式是using a predefined length of char array
,或using a buffer
在struct,我們可以解析緩衝器(例如,前4個字節是所述動物名稱長度,其次是動物的名字,和其它字段的長度和其他字段的值),後一種方法的優點是,它允許變量名長度,如以下代碼表示:
struct Animal
{
char name[128];
int age;
}
或:
struct Animal
{
int bufferLen;
char* pBuffer;
}
我的問題是:是米你接近正確嗎?即有傳遞結構的標準方法,並且有更好的方法嗎?
我的第二個問題是:我需要注意paddding,即使用#pragma pack(push/pop, n)
?
在此先感謝!
C或C++中的示例序列化代碼?這很重要。 – 2012-11-07 05:42:56
你可以用兩種方式使它工作,它們都不是錯的。關於包裝雜注,你也可以使用包裝和不包裝來編寫代碼。 – sashang
嘗試直接發送原始數據結構通常不是一個好主意。您應該使用序列化格式,例如JSON,XML,XDR等。 – Barmar