2017-01-10 7 views
1

私にはboost::asio::ip::tcp::socketがあり、ソケットに読み込み可能なデータが含まれているかどうかを確認する必要があります。私はavailable()について読んでいますが、利用可能なデータがある場合は、その機能が時々0を返します(ブロッキングなしで読み込めるように)。実行ファイルはUbuntu上で実行されています - おそらくシステムコールが助けになるでしょうか?ソケットで利用可能なバイト数を確認する

+0

読み取りに利用できるデータがない場合は、続行して後で確認します。私はasync_readもそれを解決するだろうと知っていますが、私は既に大きなポーリングループを持っていますので、利用可能なバイトをチェックする簡単な方法があれば完璧です。 – Bobface

+0

downvoter:なぜあなたはdownvoteでしたか?重要な情報を追加できますか? – Bobface

+0

あなたが言ったように、私はソケットに読み取り可能なデータが含まれているかどうかを知る必要があります。それを行う機能はありますか? – Bobface

答えて

2

ソケットに読み取り可能なデータが含まれているかどうかを知る必要があるため、通常のノンブロッキングreadをソケットから発行するだけです。データがある場合は、とにかくそれを読む必要があるので、読みを試みてください。

readの費用を避けようとしているのであれば、何も読まない場合は余分な操作を加えているだけです。読み取るデータがあるかどうかを確認することは、読み取ろうとするよりも大幅に安価ではありません。

もちろん、保留中のasync_readの方が優れています。これにより、Boostのリアクトルがその仕事をすることができます。

関連する問題