SuSE Linux Enterprise Server 12.3 (x86_64)でマルチクライアント サーバー プログラムをCで作成しました。クライアントごとに 1 つのスレッドを使用してデータを受信しています。
私の問題は次のとおりです。
サーバーを実行するために1つの端末を使用telnetし、サーバーに(クライアントとして)他のいくつかの端末を使用しています。サーバーでクライアントからデータを受信するために使用しました。また、エラーrecv()の戻り値のチェックも適用しました。Conn. クローズオン& 通常動作それ以外. ではフラグを使用していません。 recv()-10recv()
通常、 とを使用して telnet セッションを閉じる (つまり、クライアントを切断する) と、プログラムは正常Ctrl+]に動作しますがclose、 を使用してクライアントを強制的に終了するとkill <pid>、サーバーは接続の切断を検出できません。
それを修正する方法は?
制約:クライアント側に条件を設定したくありません。サーバー側のみでこれを修正したいです。