This works fine but has a couple major drawbacks: a) for each object to be sent a new archive is created and destroyed (performance) b) none of the pointer tracking and other boost::serialization features are available and c) especially for small objects this will create serious bandwith "bloat" since each archive contains at least a 27byte header.
What I want to achieve is to keep the archive open for the duration of the life time of the connection or logical session which may allow for socket reconnects. I will look into using asio for socket handling though. If I can make it work I'll share the code, maybe it can be included in asio which would be good because I wouldn't have to maintain it ;-)