同じプロセス (異なるスレッド) 内で Boost::asio と accept() (両方の TCP ソケット) などのネイティブ呼び出しを使用する際に既知の問題はありますか? 私は Debian を使用しており、C++ 言語を使用しています。私の観察では、accept() の動作に一貫性がありません。
プロセスを実行する特定のインスタンスで、クライアントはスムーズに接続できます。クライアント数に関係なくスムーズに接続できます。
プロセスを実行する別のインスタンスでは、クライアントが接続したときに「引数が無効です」と言って、accept 呼び出しが失敗します。このようなエラーは、ソケットがリッスン ソケットとして適切に構成されていない場合に発生するはずです。このエラーが発生すると、接続しようとしているすべてのクライアントで同じエラーが発生します。唯一の回避策は、プロセスを再度実行し、次回は正常に機能することを期待することです。
その他の観察:- - 一部のファイルに対してさらにいくつかの記述子が開かれると、問題が解消される傾向があります - boost::asio コードを削除すると、accept は完全に正常に動作します
制限事項: コードを共有できません