从boost asio udp socket读取特定大小的数据

时间:2011-08-02 10:08:52

标签: udp boost-asio

我想从udp socket读取特定的字节数。在tcp套接字中,我可以使用socket.read,在那里我可以指定要接收的数据量。我没有找到UDP套接字的类似功能。我正在使用receive_from(),我可以在其中指定要读取的数据量,但是如果有更多数据则不会读取数据,并且会出现以下错误。

"A message sent on a datagram socket was larger than the internal message buffer or some other network limit, or the buffer used to receive a datagram into was smaller than the datagram itself"   std::basic_string<char,std::char_traits<char>,std::allocator<char> >

我无法找到我需要为message_flags(3rd arg to receive_from)提供什么值,以便它将读取指定的字节数。 Currenly我使用以下代码读取数据,但它读取所有数据或没有数据。

        size_t size=socket.receive_from(boost::asio::buffer((const void*)&discRsp,sizeof(DataStructure)),remote_endpoint,0,errors);

1 个答案:

答案 0 :(得分:1)

试试这个:

socket.set_option(boost::asio::socket_base::receive_buffer_size(65536));