2011-06-28 14 views
2

私は一般的にネットワークプログラミングを初めて使いました。私はこれについてブーストの文書で何も見つけることができませんでした。 asio :: async_readを使用すると、ソケットから読み込むデータがないときにファイルエラーの終了が発生します(少なくとも、私はそうすると思います)。この動作を防ぐために何らかのチェックを実装する方法はありますか?私が得ようとしているのは、データが存在するのを待ってから、データを読み込んでハンドラを呼び出す方法があるかどうかです。 (これは悪い言葉遣いされている場合は、私は明確にしようとします。そう言ってください。)boost :: asio読書のトラブル

答えて

3

ASIO :: async_readを使用している場合から読み取るすべき データがない場合、 ファイルエラーの終了が発生しましたソケット

eofソケットの反対側が閉じられているときに、読み取るデータがないときは閉じません。

私はATが取得しようとしている何を:データが 存在することを待つこと どのような方法がされ、その後、読んでは、データと コールハンドラ言いましたか?

これはポーリングと呼ばれ、これはasio io_serviceの機能です。ソケットio_serviceに、async_readを開始してソケットからデータを読み取るように指示します。それは、あなたのために読み込みを実行し、正常に完了したか失敗したときに補完ハンドラを起動します。

study the differencesは、Boost.Asioによって提供される非同期メソッドと同期メソッドの間で時間がかかるかもしれません。

+0

すばやくお返事ありがとうございます!私のサーバーの代わりにクライアントの問題だと思います。 – chameco

関連する問題