ローカルマシンでSSLServerSocketプログラムを試してみようとしています-(このプログラムは、サーバーオブジェクトのコンストラクターへの単一のパラメーターに基づいてプレーンソケットまたはSSLソケットのいずれかを使用することを目的としています)。プレーンデータでは、プログラムは期待どおりに機能しますが、SSLを使用します。
socket.getInputStream().read();
リモートエンドが閉じている場合でも、常に65535(つまり、0xFFFF)を返します。何が問題なのか分かりますか?それが助けになるなら、私はコードを投稿することができます。
前もって感謝します
編集:わかりました、今私は目を覚ましています-以下の人が正しく指摘しているように、それは「切断」のようなものです(isClosedはまだfalseを返しますが、入力ストリームには-1しかありません)。
SSLのデバッグ情報を見ると、次のような宝石に気づきました。
***
pool-2-thread-1, WRITE: TLSv1.1 Handshake, length = 36
%% Cached server session: [Session-3, TLS_ECDHE_RSA_WITH_RC4_128_SHA]
pool-2-thread-1, received EOFException: ignored
pool-2-thread-1, called closeInternal(false)
pool-2-thread-1, SEND TLSv1.1 ALERT: warning, description = close_notify
pool-2-thread-1, WRITE: TLSv1.1 Alert, length = 22
pool-2-thread-1, called closeSocket(selfInitiated)
After use
コードから:
final SSLSocket socket = (SSLSocket) ((SSLServerSocket)_ServerSocket).accept();
System.out.println("Before use");
socket.getInputStream().read();
System.out.println("After use");
したがって、クライアント側(この場合はブラウザ)が適切に「さようなら」と言わずに電話を切っていると思います。
私の使用目的がSSL/TLSを介したWebソケット(wss:// localhost:/)であるため、証明書のセットアップを追加してWindows 7の信頼できる証明書に追加しようとしましたが、それでも機能しないようです( htmlファイルは私のローカルシステムにあり、接続は上記のwss:URLにあるので、keygen.exeのサーバーエイリアスはlocalhostである必要がありますか?)。
私がまだ間違っているところはありますか?