0

サーバーが複数のクライアント要求を同時に処理するマルチスレッド アプリを作成しています。さらに、クライアントは他のクライアントと通信する必要があります。サーバーはさまざまなクライアントのポート アドレスを保持するため、各クライアントはピアのポート アドレスを知るためにサーバーに接続する必要があります。

プログラムについての私の理解:

client.java (ソケットとサーバーソケットがあります)

ソケット - serverocket no を登録するためにサーバーと通信するために使用されます。これは、他のピアが識別するのに役立ちます。(注: 作成時にポートを指定する必要があるサーバー ソケットとは異なり、ソケット # は OS によって一意に割り当てられるため、これについて心配する必要はありません。)

serverocket - 他のピアと通信するために使用され、この番号は他のピアに知られている必要があります。


サーバー.java

サーバーソケット - さまざまなクライアントとの通信に使用


これで、server.java と client.java の 2 つのプログラムができました。もちろん、複数のクライアントを持つために client.java を複数回実行します。ここに私の質問があります:

私のclient.javaには2つのポートがありますか? サーバーと通信するための 1 つのソケットと、他のクライアントをリッスンするための 1 つのサーバー ソケット? もしそうなら、ポート番号をパラメーターとしてclient.javaに渡して、各クライアントインスタンスの一意のサーバーソケットとして使用できるようにする必要がありますか?

私を助けてください!

4

1 に答える 1

0

はい、ランタイム引数として渡すことができます。または、一意のポート番号の割り当てについて心配する必要がないように、サーバーに決定させることもできます。

また、すべてのクライアントが同じマシン上にある場合を除いて、クライアントが相互に通信するには、クライアントポートとIPを渡す必要があると思います。

于 2012-09-18T23:01:51.787 に答える