这是代码,但出现错误:
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() );