- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 http://gwenael-dunand.developpez.com/tutoriels/cpp/boost/asio/ 上学习这个 boost 教程它给了我很多关于
的错误boost::bind(&tcp_server::handle_accept, this, new_connection, boost::asio::placeholders::error);
我这里用的
m_acceptor.async_accept(new_connection.socket(), boost::bind(&tcp_server::handle_accept, this, new_connection, boost::asio::placeholders::error));
由于这一行的存在,我得到了这个巨大的错误
In file included from /usr/include/boost/asio/basic_socket.hpp:24,
from /usr/include/boost/asio/basic_datagram_socket.hpp:25,
from /usr/include/boost/asio.hpp:20,
from /home/dipro/Development/asio/main.cpp:5:
/usr/include/boost/noncopyable.hpp: In copy constructor ‘boost::asio::basic_io_object<boost::asio::stream_socket_service<boost::asio::ip::tcp> >::basic_io_object(const boost::asio::basic_io_object<boost::asio::stream_socket_service<boost::asio::ip::tcp> >&)’:
/usr/include/boost/noncopyable.hpp:27: error: ‘boost::noncopyable_::noncopyable::noncopyable(const boost::noncopyable_::noncopyable&)’ is private
/usr/include/boost/asio/basic_io_object.hpp:30: error: within this context
In file included from /usr/include/boost/asio/datagram_socket_service.hpp:33,
from /usr/include/boost/asio/basic_datagram_socket.hpp:26,
from /usr/include/boost/asio.hpp:20,
from /home/dipro/Development/asio/main.cpp:5:
/usr/include/boost/noncopyable.hpp: In copy constructor ‘boost::asio::detail::reactive_socket_service<boost::asio::ip::tcp, boost::asio::detail::epoll_reactor<false> >::implementation_type::implementation_type(const boost::asio::detail::reactive_socket_service<boost::asio::ip::tcp, boost::asio::detail::epoll_reactor<false> >::implementation_type&)’:
/usr/include/boost/noncopyable.hpp:27: error: ‘boost::noncopyable_::noncopyable::noncopyable(const boost::noncopyable_::noncopyable&)’ is private
/usr/include/boost/asio/detail/reactive_socket_service.hpp:58: error: within this context
In file included from /usr/include/boost/asio/basic_socket.hpp:24,
from /usr/include/boost/asio/basic_datagram_socket.hpp:25,
from /usr/include/boost/asio.hpp:20,
from /home/dipro/Development/asio/main.cpp:5:
/usr/include/boost/asio/basic_io_object.hpp: In copy constructor ‘boost::asio::basic_io_object<boost::asio::stream_socket_service<boost::asio::ip::tcp> >::basic_io_object(const boost::asio::basic_io_object<boost::asio::stream_socket_service<boost::asio::ip::tcp> >&)’:
/usr/include/boost/asio/basic_io_object.hpp:30: note: synthesized method ‘boost::asio::detail::reactive_socket_service<boost::asio::ip::tcp, boost::asio::detail::epoll_reactor<false> >::implementation_type::implementation_type(const boost::asio::detail::reactive_socket_service<boost::asio::ip::tcp, boost::asio::detail::epoll_reactor<false> >::implementation_type&)’ first required here
In file included from /usr/include/boost/asio/basic_datagram_socket.hpp:25,
from /usr/include/boost/asio.hpp:20,
from /home/dipro/Development/asio/main.cpp:5:
/usr/include/boost/asio/basic_socket.hpp: In copy constructor ‘boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >::basic_socket(const boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >&)’:
/usr/include/boost/asio/basic_socket.hpp:45: note: synthesized method ‘boost::asio::basic_io_object<boost::asio::stream_socket_service<boost::asio::ip::tcp> >::basic_io_object(const boost::asio::basic_io_object<boost::asio::stream_socket_service<boost::asio::ip::tcp> >&)’ first required here
In file included from /usr/include/boost/asio.hpp:28,
from /home/dipro/Development/asio/main.cpp:5:
/usr/include/boost/asio/basic_stream_socket.hpp: In copy constructor ‘boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >::basic_stream_socket(const boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >&)’:
/usr/include/boost/asio/basic_stream_socket.hpp:49: note: synthesized method ‘boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >::basic_socket(const boost::asio::basic_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >&)’ first required here
/home/dipro/Development/asio/main.cpp: In copy constructor ‘tcp_connection::tcp_connection(const tcp_connection&)’:
/home/dipro/Development/asio/main.cpp:9: note: synthesized method ‘boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >::basic_stream_socket(const boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_socket_service<boost::asio::ip::tcp> >&)’ first required here
/home/dipro/Development/asio/main.cpp: In member function ‘void tcp_server::start_accept()’:
/home/dipro/Development/asio/main.cpp:39: note: synthesized method ‘tcp_connection::tcp_connection(const tcp_connection&)’ first required here
/home/dipro/Development/asio/main.cpp:39: error: initializing argument 3 of ‘boost::_bi::bind_t<R, boost::_mfi::mf2<R, T, A1, A2>, typename boost::_bi::list_av_3<A1, A2, A3>::type> boost::bind(R (T::*)(B1, B2), A1, A2, A3) [with R = void, T = tcp_server, B1 = tcp_connection&, B2 = const boost::system::error_code&, A1 = tcp_server*, A2 = tcp_connection, A3 = boost::arg<1> (*)()]’
make[2]: *** [CMakeFiles/asio.dir/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/asio.dir/all] Error 2
make: *** [all] Error 2
dipro@bong:~/Development/asio/build$
最佳答案
该教程似乎有错误。参数 new_connection
是通过引用获取的,因此绑定(bind)需要使用 boost::ref
,否则它将尝试复制它,并且错误显示类型是 不可复制。将您的绑定(bind)更改为:
boost::bind(
&tcp_server::handle_accept
, this
, boost::ref(new_connection) // << pass by reference
, boost::asio::placeholders::error);
关于c++ - 将 asio 与 accepter.async_accept 一起使用时出现 boost::bind 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11002923/
我自己写了一个名为asyncAccept的函数来封装标准的boost::asio::ip::acceptor::async_accept,但是当我运行我的程序时出现了问题。抛出错误并打印“参数无效”。
可以打电话吗async_accept在调用前一个调用的处理程序之前再次调用。 谢谢。 最佳答案 来自 async_accept 的文档: Regardless of whether the async
我正在使用 boost ASIO 和协程编写一个安全的 SSL 回显服务器。我希望此服务器能够为多个并发客户端提供服务,这是我的代码 try { boost::asio::io_servic
我正在尝试学习 ASIO boost,但我很难理解它。我想为应该具有可扩展性和高性能的服务器制作基本布局。 在以下 URL 中有一个设置小型 TCP 服务器的示例: http://www.boost.
见代码。 :P我能够在调用 async_accept() 之前接收新连接。我的委托(delegate)函数也从未被调用,因此我无法管理我收到的任何连接,从而使新连接变得无用。 ;) 所以这是我的问题。
以 boost 为例 https://www.boost.org/doc/libs/1_70_0/doc/html/boost_asio/example/cpp11/ssl/server.cpp 就像
我有一个问题。 我正在使用 boost::asio 开发聊天服务器。 在这里, void CServerSocket::StartAccept(boost::asio::ip::tcp::accept
我无法让这个例子工作 http://www.boost.org/doc/libs/1_61_0/doc/html/boost_asio/tutorial/tutdaytime3/src.html 我已
我的应用程序有一个 asio 服务器套接字,它必须接受来自定义的 IP 列表的连接。 这个过滤器必须由应用程序完成,(而不是由系统),因为它可以随时更改(我必须能够随时更新此列表) 客户端必须收到 a
伙计...认为在 Boost 中使用 ASIO 会简单直观。 :P 我终于开始明白了,但我遇到了一些麻烦。这是一个片段。我在 async_accept 行有几个编译器错误。我究竟做错了什么? :P 我
我试图将成员函数作为 AcceptHandler 传递给 boost::asio 的 async_accept() 方法。我收到一个编译错误: AcceptHandler type requireme
我正在使用 boost::asio,我有这样的代码: void CServer::Start(int port) { tcp::acceptor acceptor(m_IoService, t
我有一个 TCP 客户端,它可以正常调用 TCP 套接字上的常规连接。但是,对 async_connect 的调用永远不会触发处理程序。他们都使用几乎相同的代码。区别仅在于调用连接与异步连接。 标题
我最近开始在一个项目中使用 Boost.Asio,想知道是否有人知道将新创建的套接字的所有权转移到 tcp::acceptor::async_accept 的干净解决方案,这将反过来转移这个所有权接受
Server::Server(boost::asio::io_service& io_service,std::string ip,short port,std::shared_ptr factory
我目前正在尝试使用 Boost::Asio 创建一个服务器应用程序,它可以做两件简单的事情: 接受客户的传入连接 一旦客户端被接受,启动一个boost::asio::deadline_timer,它会
我正在开发一个基于 C++ ASIO 的应用程序。引用Chat Server 我的服务器类: class CServer { public: CServer(asio::io_service
我正在 http://gwenael-dunand.developpez.com/tutoriels/cpp/boost/asio/ 上学习这个 boost 教程它给了我很多关于 的错误 boost:
问题很简单(我的boost asio知识真的很烂,所以可能是微不足道的): http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/tutor
我正在尝试创建一个接受连接的异步 TCP 服务器。我将要使用如下所示的接受处理程序函数对象: template struct callback { Function func_; cal
我是一名优秀的程序员,十分优秀!