BOOST ASIO - 异步套接字
我正在尝试使用 BOOST ASIO 库异步套接字。 我的平台是Linux。 我的客户端发送数据,我可以在服务器端读取这些数据。 第二次发送数据时,客户端必须重新连接。 有没有一种方法可以使用异步套接字并保持连接处于活动状态直到显式断开连接。
我的代码详细信息:-
服务器端我使用了 async_accept() ,如下所示
_acceptor.async_accept(_connection->socket(),
boost::bind(&Server::handleAccept,
this,
boost::asio::placeholders::error));
handleAccept() looks like this
{
_connection->start();
_connection.reset(new Connection(_ioService));
_acceptor.async_accept(_connection->socket(),
boost::bind(&Server::handleAccept,
this,
boost::asio::placeholders::error));
}
start() function looks like this:-
_socket.async_read_some(boost::asio::buffer(_buffer),
_strand.wrap(
boost::bind(
&Handler::handleRead,
shared_from_this(),
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred
)
)
在我的 handleRead()
函数中,我将数据转储到屏幕上。
I am trying to use BOOST ASIO library asynchronous sockets.
My platform is Linux.
My client sends data, which I am able to read at server side.
For sending data second time, client has to connect again.
Is there a way I can use asynchronous sockets and keep the connection alive till explicit disconnection.
Details of my code:-
Server side I have used async_accept() which looks like this
_acceptor.async_accept(_connection->socket(),
boost::bind(&Server::handleAccept,
this,
boost::asio::placeholders::error));
handleAccept() looks like this
{
_connection->start();
_connection.reset(new Connection(_ioService));
_acceptor.async_accept(_connection->socket(),
boost::bind(&Server::handleAccept,
this,
boost::asio::placeholders::error));
}
start() function looks like this:-
_socket.async_read_some(boost::asio::buffer(_buffer),
_strand.wrap(
boost::bind(
&Handler::handleRead,
shared_from_this(),
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred
)
)
In my handleRead()
function, I dump the data on screen.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在
Handler::handleRead()
中,您必须再次安排async_read_some()
well in
Handler::handleRead()
you got to schedule theasync_read_some()
again