0

このようなことがうまくできるかどうか疑問に思っています:

Socket s = new Socket("", 1234);
BufferedInputStream in = new BufferedInputStream(s.getInputStream());
BufferedOutputStream out = new BufferedOutputStream(s.getOutputStream());
ObjectInputStream oin = new ObjectInputStream(s.getInputStream());
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());

または、おそらくそれを行うためのより良い方法がある場合。Buffered I/O ストリームを介して生データを送信し、オブジェクト ストリームを使用して詳細を伝達し、プログラムの接続用のプロトコルを確立したいためです。byte現在、バッファリングされたストリームを使用し、クライアント/サーバー プロトコルに配列を使用しようとしていますが、byte受信した配列が期待するものと等しくないという問題が発生したため、==演算子と.equals()メソッドはそうします私にはうまくいきません。

4

2 に答える 2

3

両方のストリームがバッファリングされているため、ストリームを組み合わせて使用​​することはできません。そのため、破損や混乱が発生します。

すべてに ObjectStreams を使用するだけです。

一般に、1 つのストリームに対して 1 つのストリーム、リーダー、またはライターに対してのみ読み取りまたは書き込みを行う必要があります。

于 2012-09-05T12:54:19.530 に答える
2

それぞれに異なるタイプの InputStreams を使用して、同じ InputStream で異なるグループのデータを読み取るにはどうすればよいですか? を見てください。あちらの私の答えが役立つかどうかを確認してください。テキストかオブジェクトかを知るために、ObjectStream 内のデータにタグを付ける必要があります。

于 2012-09-05T12:58:40.003 に答える