私はboost::asioを使用してリストをクライアントに送信し、終了したらソケットを閉じています。どういうわけか、クライアントはすべてを受信する前にファイルの終わりエラーを受け取ることがあります。
これは、最後のリストエントリを送信した直後にサーバーがソケットを閉じることに関係していると思います。この async_send を解決して、データが正常に送信された後にのみハンドラーを呼び出す簡単な方法はありますか?
それとも、End Of File エラーが別の原因で発生しているのでしょうか?
私はboost::asioを使用してリストをクライアントに送信し、終了したらソケットを閉じています。どういうわけか、クライアントはすべてを受信する前にファイルの終わりエラーを受け取ることがあります。
これは、最後のリストエントリを送信した直後にサーバーがソケットを閉じることに関係していると思います。この async_send を解決して、データが正常に送信された後にのみハンドラーを呼び出す簡単な方法はありますか?
それとも、End Of File エラーが別の原因で発生しているのでしょうか?
Boost.Asio は、TCP および UDP ソケット上のオペレーティング システムに依存しない抽象化レイヤーです。他のアプリケーションがデータを受信して処理したことを保証するものではありません。このロジックをアプリケーションに含める必要があります。OSI モデルを検討することをお勧めします。
async_send()リターンの直後にソケットを閉じている場合、これは正しくありません。完了ハンドラーが呼び出された後にのみ閉じる必要があります。