2016-07-01 45 views
1

我需要轉移在網絡中的緩衝液中,其中包含以下:如何使用C++通過網絡傳輸緩衝區?

  • 2個字節,其保持總緩衝器大小
  • 2個字節,其保持標頭的大小
  • 部首
  • 實際用戶消息

這是我所限定的緩衝液:

class Buffer 
{ 
public: 
    Buffer(size_t Capacity); 
private: 
    uint8_t totalSize[2]; 
    uint8_t headerSize[2]; 
    uint16_t header[???];  // incorrect 
    uint8_t user[Capacity]; 
}; 

我想要做的就是喜歡的東西send(reinterpret_cast<unsigned*>(&buffer))Buffer一個實例。

我知道我可以使用new爲標題和用戶分配內存,但我也試圖使緩衝存儲器的連續塊。

我該怎麼做?

回答

1

至於動態內存分配,你不能有動態分配數組。 C++應該使用容器或智能指針來正確處理內存分配和釋放。這裏的容器例如:

class Buffer{ 
public: 
    //getters and setters 
    ... 
private: 
    uint8_t totalSize[2]; 
    uint8_t headerSize[2]; 
    std::vector<uint16_t> header; 
} 

你不會需要處理能力,也就是說,將其存儲在外部,vector會爲您處理。

然後你在談論系列化。這不是在C++中那麼簡單,你不能只是一個指針指向內存中的類實例位於和轉移,它會去錯了那麼多地方,例如,有填充。你可以看看boost::serialization圖書館或自己寫。

相關問題