私はC++のマルチクライアントチャットプログラムを書いていますが、解決できない問題がいくつかあります。
1.ユーザーが入ると、サーバーがAccept()クライアントになり、クライアントにソケットIDを割り当てます。クライアントが切断すると、別のクライアントが入り、サーバーの後にAccept()、クライアントは別のソケットIDを取得します。ソケットIDを再利用したいのですが、 Accept()以前のクライアントの以前のソケットIDよりも大きなソケットIDが与えられます。では、どうすれば各クライアントにソケットIDを割り当てることができますか?
2.およびを使用select(fdmax + 1, &read_fds, NULL, NULL, NULL)しfor(i = 0; i <= fdmax; i++)て、存在するすべての接続をスキャンします。クライアントは、サーバーへのtenlet接続を使用できます。チャットに加えて、クライアントは私のサーバーでコマンド(ls、などcat)を実行できます。私のサーバーは結果を使用fork()しdup()てクライアントに送信します。PATHここに問題があります。ユーザーが新しい環境変数を割り当てるとPATH、他のクライアントのも変更されます。どうすればこれを回避できますか?すべてのクライアントが独自のデフォルトPATH値を持つ必要がありますか?