gpt4 book ai didi

c++ - 具有简单功能的 boost::asio 服务器

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:08:06 24 4
gpt4 key购买 nike

伙计们,我真的需要你们的帮助。我正在学习 boost::asio,我有 2 个问题我好几天都无法解决...

下面是我自己做的一个简单的echo server的例子:

int main(
{
// crate a server, binding it and listening connections

// acceptor server;

//socket client

server.async_accept(client, boost::bind(accept_handle, _1, &server, &client));

io_service.run();

return 0;
}

void accept_handle(const boost::system::error_code& eCode, boost::asio::ip::tcp::acceptor* server, boost::asio::ip::tcp::socket* client)
{
char data[43];
client->async_read_some(boost::asio::buffer(data, 20), boost::bind(read_handle, _1, _2, server, client));
}

void read_handle(const boost::system::error_code& eCode, size_t bytes)
{
char data_buf[20] = "hello";
client->async_write_some(boost::buufer(data, 5), boost::bind(write_handle, _1, _2, server, client));
}

void write_accept(const boost::system::error_code& eCode, size_t bytes)
{
boost::asio::ip::tcp::socket newConnection(server->get_ioservice)); // taking he io_service of the server

server->async_accept(newConnection, boost::bind(accept_handle, _1, server, client));
}

问题是服务器只接受一个客户端,它不接受其他未决客户端..我哪里做错了

注意:我在记事本中写了这段代码,如果有任何语法错误,我们深表歉意。

提前感谢您的帮助!!!

最佳答案

该代码只能接受一个连接,因为它没有accept_handle 函数中调用async_accept

该代码还可能存在对象生命周期问题:使用共享指针来管理客户端 是明智的,请参阅:Boost async_* functions and shared_ptr's .

关于c++ - 具有简单功能的 boost::asio 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46489411/

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