gpt4 book ai didi

c++ - 我如何在 Boost ASIO 中获得等待 async_read_some 的函数?

转载 作者:可可西里 更新时间:2023-11-01 02:50:27 24 4
gpt4 key购买 nike

情况:我正在运行一个异步 TCP 服务器,其中必须有来自客户端的多个同时连接。在这个特定问题中,我有一个名为 tcp_menu_id_receive() 的函数,它接收并返回客户端发送的数值。

问题:函数不等待 async_read_some() 并立即返回默认值。

int tcp_menu_id_receive()
{
auto self(shared_from_this());

int menuid = 0;
socket_.async_read_some(boost::asio::buffer(data_, max_length), [this, self, &menuid](boost::system::error_code ec, std::size_t length)
{
if (!ec)
{
std::string ReceivedData(data_, data_ + length);
menuid = std::stoi(ReceivedData);
std::cout << "!ec menuid: " << menuid << std::endl;
}
});
std::cout << "non !ec menuid: " << menuid << std::endl;

return menuid;
}

问题:如何获取`tcp_menu_id_receive'来等待客户端的数据?

最佳答案

这实际上是 async_read_some 应该做的。它会立即返回给调用者,因为它是一个异步调用。稍后,回调 函数将在事件发生时被调用 - io_service 实际上会管理它。

我相信您想使用同步读取的非异步读取,这就是 basic_stream_socket::read_some 方法。

关于c++ - 我如何在 Boost ASIO 中获得等待 async_read_some 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47408129/

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