ServerSocketクラスは、一般的に着信接続をリッスンするように設計されていますが、代わりにSocketオブジェクトを使用して、Javaで着信データを取得できますか?はいの場合、そうするために必要な追加の予防措置はありますか?
編集:答えてくれてありがとう...しかしUDPにはソケットクラスが1つしかありません-DatagramSocketでしょ?
ServerSocketクラスは、一般的に着信接続をリッスンするように設計されていますが、代わりにSocketオブジェクトを使用して、Javaで着信データを取得できますか?はいの場合、そうするために必要な追加の予防措置はありますか?
編集:答えてくれてありがとう...しかしUDPにはソケットクラスが1つしかありません-DatagramSocketでしょ?
これServerSocket
は、ローカルポートへのbind()およびaccept()に使用されます。名前にもかかわらず、ではServerSocket
なくSocket
、接続を受信するためにのみ使用されます。それが完了するSocket
と、通信パイプである着信要求を受け入れることからが得られます。Socket
のような接続レシーバーを使用せずに、を使用して着信要求を受信できるとは思いませんServerSocket
。
ソケットは着信接続を受信できません。これを実行できるのはServerSocketのみです。
ソケットを使用する場合、一方の端がもう一方の端に手を伸ばして接続する必要があります(そして、もう一方の端はその接続をリッスンしている必要があります)。手を差し伸べている端は、通常、クライアントと呼ばれます。リッスンしているエンドはサーバーと呼ばれます。
ServerSocketは、そのリスニング動作を表します。ServerSocketが接続を受信すると、ソケットが作成されます。したがって、実際には両方を使用する必要があります。サーバーは最初にServerSocketをセットアップし、次にaccept()を使用して接続を待機します。これにより、接続が到着するとソケットが作成されます。
一部のアプリケーションでは、サーバーはさらに接続を待機し続けますが、他のアプリケーションでは、この時点でServerSocketを廃止して、ソケットについて心配するだけです。
残念ながら、誰かが接続をリッスンする必要があるため、(両方が接続している3番目のサーバーがない限り)両側にクライアントを配置することはできません。