如何在 C++ 中通过套接字发送 ostream?

How to send ostream by socket in C++?

我正在尝试通过 C++ 中的套接字发送包含二进制数据的 ostream

我正在使用 Microsoft SEAL 开发有关加密。
现在我需要从客户端向服务器发送一个密文。 Microsoft SEAL提供函数

void Ciphertext::save(ostream &stream) const

Ciphertext对象序列化为ostream, 但在调用

void Ciphertext::save(ostream &stream) const 后,

我不知道如何发送 密文 (在ostream)通过socket在客户端(当然也不知道如何在服务器端接收)。

我尝试了solution,但是当数据是二进制数据.

时似乎无法工作

我想知道客户端发送ostream,服务端接收的代码怎么写。谢谢。

你可以通过它ostringstream来填充,然后从中提取包含二进制数据的字符串:

#include <sstream>
#include <string>
// ...
std::string save_into_string(Ciphertext const& ciphertext) {
    std::ostringstream s;
    ciphertext.save(s);
    return s.str();
}