EOSに達した後のJavaソケットのInputStreamをリセット
-
21-09-2019 - |
質問
私は、TCP / IPソケットを介して2つの別々のアプリケーションを接続しようとしています。他の「クライアント」として動作していないもされていないアプリケーションのこのような場合には、相互に通信する必要がある2台の別々のサーバとしてそれらを記述するために容易になるだろう。
私はInputStream.Read()
機能を使用していたデータを受信するには、それが-1
の値を受信すると、それは、処理を停止する必要があります。しかし、今の問題は、データの別のセットがInputStream
に沿って来ればストリーム(EOS
)の最後に、すべての新しいデータであることを捨てて送信または無視されるように、既にあるということです。私はこの問題を解決することが判明している唯一の方法は、ストリームの終わりたら、私はソケットを閉じて、私はより良い他の方法で処理されるかもしれないと思うそれを再度開く達したということです。
私はそれが一緒に来ることがあり、次のデータセットの準備ができているようにInputStreamをリセットすることができますどのように?
解決
もう一方の端はそのソケットの書き込み側を閉鎖したため、TCP / IPソケットからの読み取り時に
あなたはEOSを得ています。この問題が発生すると、TCP / IPプロトコルが「unclose」の接続方法を提供していません。
あなたが新しい接続を開く必要がしたくない場合は、、あなたが近くをやってなくて...各論理データセットの終わりを意味することを可能にするTCP / IPトランスポートプロトコルの上にアプリケーションプロトコルを必要としています。
所属していません StackOverflow