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