コードは次のとおりですが、エラーが発生しました:
bin = new ByteArrayInputStream(socket.getInputStream());
ソケットからの受信byte[]
は可能ですか?ByteArrayInputStream
コードは次のとおりですが、エラーが発生しました:
bin = new ByteArrayInputStream(socket.getInputStream());
ソケットからの受信byte[]
は可能ですか?ByteArrayInputStream
いいえ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() );