采用异步网络通信,boost::udp 客户端读不到数据
上海老李 2010-01-28 04:04:39 构造函数
udp_client(boost::asio::io_service& io_service__,std::string strip,std::string strport,std::size_t max_message_length)
:io_service_(io_service__),
s(io_service__, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(),0 )),
resolver_(io_service__),
query_(udp::v4(), strip,strport),
iterator_(resolver_.resolve((query_))),
strand_(io_service__)
{
boost::asio::socket_base::receive_buffer_size receive_buffer_size(64 * 1024 * 1024);
s.set_option(receive_buffer_size);
start_read();
}
读:
void receive(const boost::system::error_code& error, std::size_t bytes_transferred)
{
std::cout << "handle_read: " << bytes_transferred << std:: endl;
std::cout << readmsg.base() << std::endl;
start_read();
}
void start_read()
{
std::cout << "start reading" << std::endl;
// s.async_receive(boost::asio::buffer(readmsg.wr_ptr(),max_message_length_),
// strand_.wrap(
// boost::bind(&udp_client::receive, this,
// boost::asio::placeholders::error,
// boost::asio::placeholders::bytes_transferred)));
s.async_receive_from(boost::asio::buffer(readmsg.wr_ptr(), max_message_length_), recv_endpoint,
strand_.wrap(
boost::bind(&udp_client::receive, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred)));
}
以上是客户端的,而服务器则是指定端口的,在用tcpview看时,客户端的端口是打开的,但是收数据时,总是收不到,读到的数据一直为0,buffer内也是空的,有哪位遇到过吗?