2

ServerSocketクラスは、一般的に着信接続をリッスンするように設計されていますが、代わりにSocketオブジェクトを使用して、Javaで着信データを取得できますか?はいの場合、そうするために必要な追加の予防措置はありますか?

編集:答えてくれてありがとう...しかしUDPにはソケットクラスが1つしかありません-DatagramSocketでしょ?

4

3 に答える 3

5

これServerSocketは、ローカルポートへのbind()およびaccept()に使用されます。名前にもかかわらず、ではServerSocketなくSocket、接続を受信するためにのみ使用されます。それが完了するSocketと、通信パイプである着信要求を受け入れることからが得られます。Socketのような接続レシーバーを使用せずに、を使用して着信要求を受信できるとは思いませんServerSocket

于 2012-09-19T12:07:10.723 に答える
3

ソケットは着信接続を受信できません。これを実行できるのはServerSocketのみです。

于 2012-09-19T12:08:52.080 に答える
2

ソケットを使用する場合、一方の端がもう一方の端に手を伸ばして接続する必要があります(そして、もう一方の端はその接続をリッスンしている必要があります)。手を差し伸べている端は、通常、クライアントと呼ばれます。リッスンしているエンドはサーバーと呼ばれます。

ServerSocketは、そのリスニング動作を表します。ServerSocketが接続を受信すると、ソケットが作成されます。したがって、実際には両方を使用する必要があります。サーバーは最初にServerSocketをセットアップし、次にaccept()を使用して接続を待機します。これにより、接続が到着するとソケットが作成されます。

一部のアプリケーションでは、サーバーはさらに接続を待機し続けますが、他のアプリケーションでは、この時点でServerSocketを廃止して、ソケットについて心配するだけです。

残念ながら、誰かが接続をリッスンする必要があるため、(両方が接続している3番目のサーバーがない限り)両側にクライアントを配置することはできません。

于 2012-09-19T12:07:41.723 に答える