3


Java Sockets を使用してクライアント サーバー プログラムを作成しましたが、問題なく動作します。現在、クライアントとサーバー間の通信のために HTTPS に移行しようとしています。
私のコードは Java 組み込みソケット (Socket および ServerSocket) に基づいており、問題なく動作します。しかし、残りのコードを変更せずにHTTPS ソケット ( SSLSocketおよびSSLServerSocket )を使用すると、残念ながら機能しなくなります。 プログラムは、サーバーとクライアントが数分間データを送受信できるようにするために、サーバーとクライアント間の永続的な接続を必要とします。問題は、最初のトランザクションが完了した後、サーバーまたはクライアント側で HTTPS 接続が閉じられたことにあるようです。 より正確に言うと、次のようになります。




1. サーバーは SSLServerSocket を作成し、それに対して「accept()」を呼び出します。
2. クライアントは SSLSocket を作成し、サーバーに接続します。次に、「DataOutputStream」を介してサーバーに書き込みます
。 3. サーバーは、「DataInputStream」を介してクライアントを読み取り、「DataOutputStream」を介して応答を返します。
4. クライアントは「DataInputStream」を介してサーバーを読み取ります。
今まで大丈夫です!しかしその後、クライアントが別のストリームを送信すると、サーバー側では、以前に使用されたのと同じメソッドを介してサーバー上で「available()」されるデータはありません。

この接続を維持する方法はありますか?

Tnx for ur は事前に役立ちます!

4

1 に答える 1

1

InputStream.available()ソケット入力を検出する信頼できる方法ではありません。したがって、接続が有効ではないという証拠はありません。read メソッドでブロックするだけです。これは、クライアントごとの読み取り専用スレッドを意味します。

于 2013-10-26T08:51:51.290 に答える