2011-08-02 17 views
1

udpソケットから特定のバイト数を読みたい。 tcpソケットでは、受信するデータ量を指定できるsocket.readを使用できます。私はUDPソケットのための同様の機能を見つけることはありません。 receive_from()を使用して、読み込むデータの量を指定できますが、データがある場合はデータが読み込まれず、エラーが発生します。boost asio udpソケットから特定のデータサイズを読み取る

"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); 
+0

を(http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/reference/basic_stream_socket/receive/overload1.html)? –

+0

おっと、私の悪いです。はい、私はread()フリー関数を意味していました。しかし、その機能はUDPソケットをデータグラムソケットから受け入れていません。ここに私のオプションは何ですか:(。 – dev

答えて

1

このお試しください:なし `IP :: TCP ::ソケット::読み()`メソッドは、おそらくあなたは `読んで()` [フリー機能]を意味し、存在しない

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

+0

ありがとうKabal。私はそれを試してみます。 – dev

関連する問題