12

Socket クラスを使用する場合、あるポートでサーバーへの TCP 接続を確立しますが、サーバー上では、ServerSocket は各受け入れ要求に対して複数のクライアント接続を処理し、それをスレッドに委譲して要求を処理することができます。しかし、ServerSocket クラスが同じポートで複数の tcp 接続を受け入れるにはどうすればよいでしょうか。

許可する接続数または許可される最大バックログを決定するのはOS次第であることを意味しますか?これは、OS上のアプリケーションによって制御できます(つまり、JavaはOSによってサポートされる最大バックログによって制限されます)。 TCP仕様にバックログ接続の制限はありますか?

敬具、
ケシャブ

4

3 に答える 3

8

TCP 接続は、一意のセット (送信元 IP、送信元ポート、送信先 IP、送信先ポート) によって定義されます。サーバーは特定のポートにバインドするため、4 つの変数のうち 2 つを定義します。クライアントがすべて異なる IP や異なるポートから来ている限り、問題にはなりません。

はい、OS は許可される合計接続数を制御でき、プログラムはそれをさらに制限できます。

于 2010-09-16T18:58:18.590 に答える
3

複数のクライアントにサービスを提供し、同時に処理するクライアントの数を選択できます。

接続 (別名、Socketクライアントとサーバー間の接続) は、ServerIP/ServerPort によって識別されるだけでなく、ClientIP/ClientPort/ServerIP/ServerPort によって識別されます。

接続を受け入れるだけで済みます (通常、それらは別のスレッドで処理されます)。


デフォルトでは、バックログ サイズは 50 ですが、ServerSocket.

new ServerSocket(21, 100); //Create a server socket with a backlog of 100

資力 :

于 2010-09-16T18:59:04.063 に答える
-1

サーバーが実行されているオペレーティング システムは、リモート ポート番号を使用して、サーバーへのさまざまな接続を区別します。

于 2010-09-16T18:58:56.387 に答える