我想从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);
答案 0 :(得分:1)
试试这个:
socket.set_option(boost::asio::socket_base::receive_buffer_size(65536));