私のアプリケーションは Multiuser Echo チャット プログラムです。クライアントがメッセージを送信すると、サーバーはメッセージの発信元のクライアントを含むすべてのクライアントに送信します。cで実装されています。
サーバーは、新しいクライアント接続ごとにプロセスをフォークしました。すべての子プロセスは、共有メモリに格納されているすべてのクライアントのソケット記述子にアクセスできます
クライアントが 1 つの場合、メッセージは正しくエコー バックされます。2 番目のクライアントが参加してメッセージを送信すると、メッセージが 2 つのクライアントに正しくエコー バックされます。
最初のクライアントがメッセージを送信すると、最初のクライアントに正しく送信されます。しかし、2 番目のクライアントにそのメッセージを送信しようとすると、エラーBad file descriptorで失敗しました
同様に、すべてのクライアントは、以前に接続されたクライアントとそれ自体にメッセージを送信できますが、後で接続されたクライアントには送信できません
これを修正するには?