//前提
boost::shared_ptr<boost::thread> _Thread;
boost::asio::io_service _IOS;
boost::shared_ptr<udp::socket> _Socket;
TSString _MulticastAddress;
//异步调用中run函数说明;
//IOS中的run成员函数可以等待异步操作完成,当异步操作完成时IOS从操作系统获取执行结果,调用完成处理函数;
//在异步调用中run函数是必须的,调用run函数,它启动前摄器的事件处理循环,阻塞等待所有的操作完成并分派事件,
//如果不调用run那么虽然操作被异步执行了,但没有一个等待它完成的机制,回调函数将得不到执行的机会
//IOS的run函数在新建的线程中运行,由于IOS的数据传输工作都是在run中执行,故使用IOS进行UDP/TCP传输都在另起新线程中执行.
_Thread.rest( nwe boost::thread(boost::bind(&boost::asio::io_service::run, &_IOS)) );
boost::asion::ip::udp::endpoint listen_endpoint( udp::v4(), 1010 );
_Socket,reset( new udp::socket(_IOS) );
//修改接收缓冲区大小
_Socket->set_option( boost::asio::socket_base::receive_buffer_size(1024*1024*50) );
_Socket->open( lister_endpoint );
_Socket->set_option( boost::asio::ip::udp::socket::reuse_address(true) );
_Socket->bind( listen_endpoint );
_S