boost::asio を使用してネットワーク プログラミングを実装し、タイミングの問題が発生しています。現在、問題はクライアントに最も多くあります。
プロトコルは、最初にサーバーが日時文字列をユーザーに返し、クライアントがそれを読み取ります。その部分までは正常に動作します。しかし、私が望んでいるのは、コマンドをサーバーに書き込んで処理できるようにすることです。これを実現するために、以下に示すように io_service.post() 関数を使用します。
io_service.post(boost::bind()); // bounded function calls async_write() method.
何らかの理由で、ソケットがまだ作成されていないときに、最初のクライアント/サーバー通信の前に書き込み試行が発生します。そして、悪いソケット記述子エラーが発生します。
これで、io_service の run メソッドが実際に別のスレッドで呼び出されます。
post メソッドの前に sleep(2) コマンドを配置すると、正常に動作します。
ポストされた呼び出しが実行される前にソケットが作成されるように、これを同期する方法はありますか。