c++ - 使用 Boost::Asio 通过 TCP 读取二进制数据

标签 c++ boost stream boost-asio binarystream

我的程序通过 TCP 连接接收二进制数据。使用 boost::asio 库建立连接。读取流后,我需要将接收到的数据作为 char*-Array 返回。这是我到目前为止所得到的:

char* read()
    {
        boost::system::error_code ec;

        boost::asio::streambuf response;
        size_t bytes = boost::asio::read(this->socket_, response, ec);

        if(ec.value() != boost::system::errc::success)
        {
            cout << "In " << BOOST_CURRENT_FUNCTION << ": " << ec.category().name() << ':' << ec.value() << endl;
            return "";
        }

        std::istream stream(&response);

        char* ret = new char[bytes]{0};
        int i = 0;
        while(!stream.eof())
        {
            // ..??.. Write into char array
            i++;
        }
    }

我正在寻找一个将接收到的二进制数据写入字符数组的函数。

最佳答案

您可以使用 read例如。

stream.read(ret, bytes);

或者您可以使用 sgetn

response.read(ret, bytes);

或者您可以使用任何其他东西。

关于c++ - 使用 Boost::Asio 通过 TCP 读取二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34510468/

相关文章:

android - Android 上的 Qt 触觉反馈

c++ - 为什么 C++ 允许将常量转换为另一个方法中的引用参数?

java - KStream和KTable同时操作

c++ - 在 Qt 中将文件移动到垃圾箱/回收站

c++ - 从多重继承中确定模板包

c++ - 使用 Python 检索 C++ 对象成员指针

c++ - 使用 cmake 错误链接 boost 日志

c++ - 如何按值对 **boost::unordered_map** 进行排序并按该顺序仅返回键?

c++ - ifstream 和 ofstream 中的 filebuf

ios - 流委托(delegate)未调用