ASIO库使用注意事项
1. 使用 io_ service::work 实现 io_service 无任务时不退出 正常情况下向io_service抛任务,它执行完成后就会自动退出,而要实现那种chromium那种的循环队列,没有任务就等待任务的效果,可以使用io_service初始化一个 io_ service::work ,只要这个work没有被析构,那么service就不会主动结束。 但是在要销毁service时,要想让它完全退出,需要先将work销毁,再等待service内还在执行的任务执行完成,service才能完全结束。 写asio程序最容易碰到的就是程序无法结束,根源就在于使用的io_service一直没有结束。未超时的timer、还在活跃中的socket等,都需要手动结束或释放,service才能正常退出。 2.指定网卡加入组播 服务端: asio::ip::udp::endpoint listenEndpoint(asio::ip::udp::v4(), _multiCastPort); _listenSocket.open(listenEndpoint.protocol()); _listenSocket.set_option(asio::ip::udp::socket::reuse_address(true)); _listenSocket.set_option(asio::ip: