开发者

read specific size of data from boost asio udp socket

开发者 https://www.devze.com 2023-03-25 19:12 出处:网络
I want to read specific number of bytes from udp socket. In tcp socket I can usesocket.read where I can specify the amount of data to receive. I don\'t find similar function for UDP socke开发者_运维问

I want to read specific number of bytes from udp socket. In tcp socket I can use socket.read where I can specify the amount of data to receive. I don't find similar function for UDP socke开发者_运维问答t. I am using receive_from() where I can specify the amount of data to read, but if there is more data then no data is read and I get following error.

"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> >

I am not able to find what value do I need to give for message_flags (3rd arg to receive_from) so that it will read the number of bytes specified. Currenly I am using the following code to read data but it either reads all data or no data.

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


Try this:

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

0

精彩评论

暂无评论...
验证码 换一张
取 消