0

ソケット sa と new_socket を持つサーバー プログラムがあるとします。私が使用しているチュートリアルでは、socket sa と new_socket、sockaddr_innamedserverclient;の 2 つの構造を使用しています。次に、ソケットを IP アドレス:ポートにバインドし、listen()関数を呼び出します。listen戻ると、プログラムが呼び出します

new_socket = accept(sa, (struct sockaddr*)&client, &length);

私の質問は、接続している人が 3 人いるとしましょう...サーバーに接続する 3 つの異なるクライアントにサービスを提供する場合、関数ごとに 3 つの異なる構造体と 3 つの異なる new_sockets が必要acceptですか?

また、なぜ new_socket が必要なのacceptですか? bind1 用と 1 用の 2 つの異なるソケットがあるのはなぜacceptですか? bindedでソケット操作を実行すべきではありませんか?

私はソケット用のクラスを実装して簡単にし、おっとスキルを練習する良い方法にしようとしています....

4

1 に答える 1

2

通常、サーバーには 1 つのソケットが必要です。このソケットは、サーバーがリッスンしているポートを設定し、accept()着信接続を待機するために呼び出す場所です。

さらに、クライアント接続ごとにソケットが必要です。これは、 によって返される新しいソケットですaccept()。これは、サーバーが複数のクライアントを処理できるために必要です。すべてに 1 つのソケットを使用した場合、どのクライアントがメッセージを送信しているか、またはどのクライアントに返信するかを示す方法がありません。

于 2013-03-30T00:46:39.877 に答える