【发布时间】:2017-11-21 08:10:31
【问题描述】:
情况:我正在运行一个异步 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'等待客户端的数据?
【问题讨论】:
标签: c++ networking boost tcp boost-asio