我想异步读取来自udp套接字的数据,该数据被视为服务器套接字并正在侦听某个端口。
socket_->async_receive_from(
boost::asio::null_buffers(),
sender_endpoint_,
boost::bind(&UdpSocketServer::HandleReceive,
shared_from_this(),
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred
)
);
问题是:sender_endpoint_始终为0.0.0.0:0,同时从客户端收到一些数据。 当我使用boost :: asio :: buffer(recv_buffer_)代替boost :: aiso :: null_buffers()时, sender_endpoint_来吧。我尝试在谷歌搜索这个有线案例,但无法想象 出。既然以前有人遇到过这个案子?或任何人可以帮忙?非常感谢。
答案 0 :(得分:0)
你不应该以这种方式使用null_buffers。
null_buffers类型仅用于"最低层"上的async_read/write_some()
,即套接字或描述符。它不是任何流类型要求的一部分,因此不支持async_read等组合操作。
Please read this ticket for more information
鉴于上面的跟踪器可能是暂时的,但现在通知的行为方式是,您收到一个(多余的)HandleReceive
通知,收到零字节且空sender_endpoint_
- 一个通知您可以丢弃,然后使用正确的端点信息进行后续HandleReceive
通知。