2010-11-03 14 views
5

kullanarak TCP tarafından nesneleri göndermek:serialize ve ben bir tcp bağlantısı üzerinden C++ ojbects göndermeye çalışıyorum boost

  • Benim nesneleri tüm seri hale getirilebilir kullanarak boost seri vardır.
  • TCP sunucusu/istemci, artırılmış olarak asio ile üretilmiştir.

Temel olarak, ileti türünü (gönderilen nesnenin türü) ve verilerin kendisini (serileştirilmiş nesneyi) ve veri boyutunu içerecek şekilde ileti gönderilmesini isterim böylece arabelleği işleyebilirim (boyut, POD olmayan aynı türdeki nesneler için değişebilir).

Biraz takılıyorum çünkü bunu nasıl gönderebileceğimi bilmiyorum. Verileri bir arabellek arabelleğine dönüştürme ve arabellek başlangıcında ek bilgi (ileti türü & boyutu) ekleme ve bu arabelleği tcp bağlantısının gönderme işlevine ekleme adımları nedir anlamıyorum tüm bunları mümkün olduğunca az kopya ile yapmak.

Teşekkürler.

-

cevap

7

Here Eğer boost :: asio birlikte boost :: seri nasıl kullanılacağına dair iyi bir örnek bulabilirsiniz. Böyle

şey ne ihtiyaç çekirdeğidir: cevap için

std::ostringstream archive_stream; 
boost::archive::text_oarchive archive(archive_stream); 
archive << YOUR_DATA; 
outbound_data_ = archive_stream.str(); 
boost::asio::async_write(socket_, boost::asio::buffer(outbound_data_), handler); 
+0

teşekkürler. Giden veriye ne tür veriyorsunuz? – Arthur

+0

Kodu aldım (burada) (http://www.boost.org/doc/libs/1_38_0/doc/html/boost_asio/example/serialization/connection.hpp). outbound_data_ std :: string olarak bildirildi – peoro

İlgili konular