gpt4 book ai didi

c++ - 如何将 boost::asio::tcp::io_stream 附加到我的 io_service?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:31 27 4
gpt4 key购买 nike

我习惯使用 boost::asio::ip::tcp::socket我在哪里 construct他们用io_service .这很有用,因为我有一个用于所有套接字的 io_service,并且这些套接字共享一个线程池。

现在,我正在尝试使用 boost::asio::ip::tcp::io_stream ,我希望它在同一个线程池中执行所有异步工作。但是,似乎不可能 construct带有外部 io_servicetcp::io_stream。底层套接字确实使用了内部初始化的 io_service。有没有办法让我继续使用集中管理的 io_servicetcp::io_stream

我使用的是 boost 版本 1.62。

最佳答案

您可以将 boost::asio::ip::tcp::socket 对象设置到流缓冲区中:

Live On Coliru

#include <boost/asio.hpp>

namespace ba = boost::asio;
using ba::ip::tcp;

int main() {
ba::io_service svc;
tcp::socket s(svc);

// e.g. connect to test service
s.connect({{}, 6767});

tcp::iostream stream;
stream.rdbuf()->socket() = std::move(s);

for (std::string line; getline(stream, line);) {
std::reverse(line.begin(), line.end());
stream << line << std::endl;
}
}

当针对 6767 端口上的 netcat session 运行时:

This is
Not so bad
After all

收到的回复是:

si sihT
dab os toN
lla retfA

关于c++ - 如何将 boost::asio::tcp::io_stream 附加到我的 io_service?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49386216/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com