これがコードですが、エラーが発生しました:
bin = new ByteArrayInputStream(socket.getInputStream());
ソケットからByteArrayInputStream
を使用してbyte[]
を受信することは可能ですか?
いいえ。バイトの配列があり、ファイルであるかのように配列から読み取りたい場合は、ByteArrayInputStream
を使用します。ソケットからバイトの配列を読み取りたいだけの場合は、次のようにします。
InputStream stream = socket.getInputStream();
byte[] data = new byte[100];
int count = stream.read(data);
変数count
には実際に読み取られたバイト数が含まれ、データはもちろん配列data
にあります。
ソケットから直接読み取ることによってByteArrayInputStream
のインスタンスを取得することはできません。
最初に読んでバイトコンテンツを見つける必要があります。
次に、それを使用してByteArrayInputStream
のインスタンスを作成します。
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() );