我想從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