Я использую boost :: asio :: streambuf для записи ostream в мой сокет boost.
Name name;
name.set_name("platzhirsch");
boost::asio::streambuf b;
std::ostream os(&b);
ZeroCopyOutputStream *raw_output = new OstreamOutputStream(&os);
CodedOutputStream *coded_output = new CodedOutputStream(raw_output);
coded_output->WriteVarint32(name.ByteSize());
name.SerializeToCodedStream(coded_output);
socket.send(b.data());
Однако size_t, возвращаемое send, равно 0. Я подозреваю, что данные вообще не отправляются,Кроме того, потому что клиентский сокет бросает ужасные исключения.Я спрашиваю, есть ли что-то странное в моем коде.
Другими словами, могу ли я проверить, является ли streambuf пустым или действительно ли записанные в него данные есть.