10

コードは次のとおりですが、エラーが発生しました:

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

ソケットからの受信byte[]は可能ですか?ByteArrayInputStream

4

2 に答える 2

26

いいえByteArrayInputStream。バイトの配列があり、ファイルであるかのように配列から読み取りたい場合に使用します。ソケットからバイト配列を読み取るだけの場合は、次のようにします。

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

変数countには実際に読み取られたバイト数が含まれ、データはもちろん配列にありdataます。

于 2012-05-07T02:18:34.507 に答える
11

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() );  
于 2012-05-07T02:53:38.603 に答える