我想从udp套接字读取特定数量的字节。在tcp套接字中,我可以使用socket.read来指定要接收的数据量。我没有找到UDP套接字的类似功能。我正在使用receive_from(),我可以指定要读取的数据量,但是如果有更多数据,则不会读取任何数据,并且出现跟随错误。从boost asio udp socket读取特定数据大小
"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(第三个参数来receive_from),因此它会读取指定的字节数什么样的价值。当然,我正在使用下面的代码来读取数据,但它要么读取所有的数据,要么没有数据。
size_t size=socket.receive_from(boost::asio::buffer((const void*)&discRsp,sizeof(DataStructure)),remote_endpoint,0,errors);
没有'IP :: TCP ::插座::阅读()'方法,也许你的意思是'阅读()'[免费功能] (http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/reference/basic_stream_socket/receive/overload1.html)? –
oops我的坏。是的Sam我的意思是read()免费功能。但该函数不接受UDP套接字,因为它的数据报套接字。我有什么选择:(。 – dev