4

サーバーと通信しているので、理想的には入力ストリームと出力ストリームを常に稼働させたいと思います。未承諾の応答を受信するため、入力ストリームでデータを受信する準備ができている必要があります。

さらに詳しく説明する前に、私が行う接続はすべてSSLをサポートできる必要があると言わなければなりません。

私が遭遇している問題は、HttpUrLConnectionを開いて出力ストリームからデータを送信すると、入力ストリームを開くまで実際の出力が送信されないことです。入力ストリームを開くと、出力ストリームが強制終了され、ストリームを閉じると回復することはできなかったようです。

私の望ましい振る舞いを実装するための最良の方法は何でしょうか?1つのポートで両方のストリームを同時に維持することが不可能な場合、一種のポートロック/スイッチを介して接続を共有する2つの別々のストリームを持つことができる方法はありますか?

リクエストの終了を通知するために出力ストリームを強制終了せずに出力を送信するためのライブラリはありますか?

4

2 に答える 2

2

Httpは単一の要求プロトコルです。

(WebSocketを除いて)http(s)を使用して永続的な接続を作成することはできません。別のプロトコルが必要です。

基本的なソケットを使用できます。URLがsocket://で始まることを除けば、ほとんどの場合http接続のように機能します。

接続を開くだけで、入力ストリームと出力ストリームを取得して使用できます。

于 2012-08-31T15:48:34.400 に答える
1

-私の最善の策は、を使用することjava.nio packageです。

-java.nioパッケージSocketChannelから使用するSocketChannel、を非ブロッキングモードに設定できます。そうすると、非同期モードで、を呼び出すことができconnect()ますread()write()

于 2012-08-31T17:31:11.153 に答える