大家来帮看下,这个单冒号是什么功能
Boost ASIO的异步例程中:
请问
CHelloWorld_Service(io_service &iosev)
:m_iosev(iosev),m_acceptor(iosev, tcp::endpoint(tcp::v4(), 1000))
{}
struct CHelloWorld_Serviceboost struct
{
CHelloWorld_Service(io_service &iosev)
:m_iosev(iosev),m_acceptor(iosev, tcp::endpoint(tcp::v4(), 1000))
{}
void start()
{
// 开始等待连接(非阻塞)
boost::shared_ptr<tcp::socket> psocket(new tcp::socket(m_iosev));
// 触发的事件只有error_code参数,所以用boost::bind把socket绑定进去
m_acceptor.async_accept(*psocket,
boost::bind(&CHelloWorld_Service::accept_handler, this, psocket, _1));
}
// 有客户端连接时accept_handler触发
void accept_handler(boost::shared_ptr<tcp::socket> psocket, error_code ec)
{
if(ec) return;
// 继续等待连接
start();
// 显示远程IP
std::cout << psocket->remote_endpoint().address() << std::endl;
// 发送信息(非阻塞)
boost::shared_ptr<std::string> pstr(new std::string("hello async world!"));
psocket->async_write_some(buffer(*pstr),
boost::bind(&CHelloWorld_Service::write_handler, this, pstr, _1, _2));
}
// 异步写操作完成后write_handler触发
void write_handler(boost::shared_ptr<std::string> pstr, error_code ec,
size_t bytes_transferred)
{
if(ec)
std::cout<< "发送失败!" << std::endl;
else
std::cout<< *pstr << " 已发送" << std::endl;
}
private:
io_service &m_iosev;
ip::tcp::acceptor m_acceptor;
};