使用websocketpp时“没有用于调用绑定的匹配函数”

时间:2012-05-24 08:59:15

标签: c++ boost websocket boost-bind

我正在创建一个(c ++)应用程序,它是一个websocket客户端和websocket服务器。为了能够做到这一点,我正在使用库websocketpp。为了使应用程序既是客户端又是服务器,我希望endpoint1.run()endpoint2.listen(port)是多线程的。这是出问题的地方。

通常(单线程)我使用:endpoint.listen(port);可以使用。

为了使它成为我使用的多线程:

boost::thread t(boost::bind(&server::listen, &endpoint, port));
sleep(1);
cout << "After thread! \n";
t.join();

然而,我收到错误:

main.cpp:116: error: no matching function for call to ‘bind(<unresolved overloaded function type>, websocketpp::server*, uint16_t&)’

server::listen是一个重载函数,我应该在bind中以不同方式调用它吗?

2 个答案:

答案 0 :(得分:4)

看看boost documentation。有一个很好的例子 你需要通过自己来解决歧义。

答案 1 :(得分:0)

对于那些仍然想知道如何实现这一点的人:

void(websocketpp::role::server<websocketpp::server>::*f)(uint16_t,size_t) = &websocketpp::role::server<websocketpp::server>::listen;

boost::thread t(f, &endpoint, port, 1); //No need to use boost::bind here

之后调用t.detach()或endpoint.stop()和t.join()