2012-05-07 13 views
9

からするByteArrayInputStreamを使用すると、コードですが、エラーが発生しました:がバイトを受信[]ここソケット

bin = new ByteArrayInputStream(socket.getInputStream()); 

がソケットからByteArrayInputStreamを使用してbyte[]を受信することが可能ですか?

+1

*以下のようにバイト配列入力ストリームを生成することができ、それは完全なものにする「が、エラーを得た:」*ガット何のエラーを!常に例外とエラー出力をコピーして(コードタグを使用して)質問に貼り付けます。 –

+0

あなたの質問は理にかなっていません。 ByteArrayInputStreamは、バイト配列からバイトを読み込みます。ソケットから読み取る場合は、バイト配列から読み取ることはできません。ここで解決しようとしている問題は何ですか? – EJP

答えて

21

いいえ。ByteArrayInputStreamは、バイトの配列を持ち、ファイルであるかのように配列から読み込みたい場合に使用します。

InputStream stream = socket.getInputStream(); 
byte[] data = new byte[100]; 
int count = stream.read(data); 

変数countが実際に読み込まれたバイト数が含まれます、そしてデータはもちろん、アレイdataになります:あなただけのソケットからバイトの配列を読みたい場合は、これを行います。

7

ソケットから直接読み取ってByteArrayInputStreamのインスタンスを取得することはできません。
最初に読み込み、バイト内容を見つける必要があります。
それを使用してByteArrayInputStreamのインスタンスを作成します。あなたが手に持っていたBAOを通り

InputStream inputStream = socket.getInputStream(); 

// read from the stream 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
byte[] content = new byte[ 2048 ]; 
int bytesRead = -1; 
while((bytesRead = inputStream.read(content)) != -1) { 
    baos.write(content, 0, bytesRead); 
} // while 

さて、私はあなたがまだbaisインスタンスが必要とは思いません。
はしかし、
あなたは

ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); 
関連する問題