代码没试,看起来是这个问题DataInputStream dis = new DataInputStream(socket.getInputStream());socket流应该是获取不到长度的,因为只有都读完了才会知道流长度嘛。
你打了断点之后可以获取,是因为执行到断点之后,有足够的时候把流里面的内容全读取完,就可以获取流长度了,此方法不可取
你打了断点之后可以获取,是因为执行到断点之后,有足够的时候把流里面的内容全读取完,就可以获取流长度了,此方法不可取
dis = new DataInputStream(socket.getInputStream());
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
byte[] inputByte = new byte[1024];
int length = 0;
while ((length = dis.read(inputByte, 0, inputByte.length)) > 0) {
bytestream.write(inputByte, 0, length);
Log.v(TAG, "received " + length + " bytes");
}
Log.v(TAG, "there is " + bytestream.size() + " bytes");
Log.v(TAG, "there is " + bytestream.size() + " bytes");
这两条log打印的是什么?
length:1024
bytestream.size():7499然后我要把这个保存为图片:
int len=dis.available();是这样做吗?
新手就指教!!!
length是每次收取的数据,bytestream.size()是已收取的数据总长度。
int len=dis.available();
这是打出来的东西、、、
length:1024
length:1024
length:848
length:1024
length:424
length:1024
length:424
length:1024
length:683
bytestream.size():7499
Server02 datalength = 0
Server02 data length = 0
Server02 succeed to receive picture!!
DataInputStream dis = new DataInputStream(socket.getInputStream());
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
byte[] inputByte = new byte[1024];
int length = 0;
while ((length = dis.read(inputByte, 0, inputByte.length)) > 0) {
bytestream.write(inputByte, 0, length);
System.out.println("length:"+length);
}
System.out.println("bytestream.size():"+bytestream.size());
int len=dis.available();
这样应该不会错的吧、、、但是加入之后打印出来的len还是0、、、、
outStream.write(data);改成DataOutputStream dos = new DataOutputStream(outStream);
dos.write(bytestream.toByteArray());
dos.flush();
dos.close();