从boost asio udp套接字读取特定大小的数据

从boost asio udp套接字读取特定大小的数据,udp,boost-asio,Udp,Boost Asio,我想从udp套接字读取特定数量的字节。在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 th

我想从udp套接字读取特定数量的字节。在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> >
试试这个:

socket.set_选项(boost::asio::socket_base::receive_buffer_size(65536))

尝试以下操作:


socket.set_选项(boost::asio::socket_base::receive_buffer_size(65536))

没有
ip::tcp::socket::read()
方法,也许你指的是
read()
?糟糕透了。是的,山姆,我指的是read()自由函数。但该函数不接受UDP套接字,因为它是数据报套接字。我在这里的选项是什么:(.这里没有
ip::tcp::socket::read()
方法,也许你是指
read()
?糟糕透了。是的,山姆,我是说read()免费函数。但是该函数不接受UDP套接字,因为它是数据报套接字。我在这里的选项是什么:(.谢谢卡巴尔。我会试试。谢谢卡巴尔。我会试试的。
        size_t size=socket.receive_from(boost::asio::buffer((const void*)&discRsp,sizeof(DataStructure)),remote_endpoint,0,errors);