欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Boost Asio总结(12)class basic_socket_acceptor

发布时间:2025/3/21 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Boost Asio总结(12)class basic_socket_acceptor 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1. 对应socket api的accept()函数,用于服务端在指定的端口接收连接。

eg.

boost::asio::ip::tcp::acceptor acceptor(my_context);boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(), 12345);acceptor.open(endpoint.protocol());acceptor.bind(endpoint);

1.1

template <typename Protocol, typename Executor> class basic_socket_acceptor: public socket_base {void listen(int backlog = socket_base::max_listen_connections){boost::system::error_code ec;impl_.get_service().listen(impl_.get_implementation(), backlog, ec);boost::asio::detail::throw_error(ec, "listen");}BOOST_ASIO_SYNC_OP_VOID close(boost::system::error_code& ec){impl_.get_service().close(impl_.get_implementation(), ec);BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);}BOOST_ASIO_SYNC_OP_VOID cancel(boost::system::error_code& ec){impl_.get_service().cancel(impl_.get_implementation(), ec);BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);}/// Set an option on the acceptor. template <typename SettableSocketOption>void set_option(const SettableSocketOption& option){boost::system::error_code ec;impl_.get_service().set_option(impl_.get_implementation(), option, ec);boost::asio::detail::throw_error(ec, "set_option");}void wait(wait_type w){boost::system::error_code ec;impl_.get_service().wait(impl_.get_implementation(), w, ec);boost::asio::detail::throw_error(ec, "wait");}template <typename WaitHandler>BOOST_ASIO_INITFN_RESULT_TYPE(WaitHandler,void (boost::system::error_code))async_wait(wait_type w, BOOST_ASIO_MOVE_ARG(WaitHandler) handler){return async_initiate<WaitHandler, void (boost::system::error_code)>(initiate_async_wait(), handler, this, w);}template <typename Protocol1, typename Executor1>void accept(basic_socket<Protocol1, Executor1>& peer,typename enable_if<is_convertible<Protocol, Protocol1>::value>::type* = 0){boost::system::error_code ec;impl_.get_service().accept(impl_.get_implementation(),peer, static_cast<endpoint_type*>(0), ec);boost::asio::detail::throw_error(ec, "accept");} 《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的Boost Asio总结(12)class basic_socket_acceptor的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。