2012-01-13 5 views
1

1、私のサーバはクライアント接続を受け付けるServerSocketを持っています 2、私のクライアントはソケットを作成し、サーバにメッセージを送ります。 3、サーバーはメッセージを取得してクライアントに応答します。Javaソケットプログラミング:サーバーソケットが通信を開始することは可能ですか?

これは常に通信を開始するクライアントです。

最初のクライアント接続後にしばらくすると、サーバーは別のメッセージをクライアントに送信しますが、そうすることは可能ですか?

答えて

5

クライアントからのソケット接続をサーバー上に開いたままにしておく場合は、はい。クライアントは、常にデータが入ってくるのを待つ必要があります。

それ以外の場合は、メッセージが送信された後にサーバー上の接続が閉じられると、クライアントは間隔を空けてサーバーにポーリングする必要があります。

+0

+1:または、「クライアント」に「サーバー」がクライアントに接続できるサーバーポートを持たせることができます。しかし、クライアントが利用可能なときに常に接続を維持することの最初の提案は、はるかに優れています(そしてはるかに高速で効率的かもしれません)。 –

+1

本当ですが、サーバー側のクライアントのリストを維持して接続する必要があります。すべて私はあなたが思っているものに依存します。 –

1

クライアントは常に接続を開始する必要があります。これは、サーバーとクライアントの唯一の区別です(プログラムはサーバーとクライアントの両方になります)。

一度接続が確立されると、閉じられていない限り、どちらの側からもデータを送信できます(相手側がデータを受信して​​いると仮定して)。

関連する問題