socket传图像 客户端接收到的图片长度为负数 大家帮忙看看 是为什么啊
这是发送端
public class SendPicture {
public static final String END_SYMBOL = "\r\n";
MyThread creatServer1 = new MyThread();
static File file = new File(getDir(),"1.png");
public static void sendpicture(){
Bitmap bitmap =null;
try{FileInputStream fileStream = new FileInputStream(file);
bitmap = BitmapFactory.decodeStream(fileStream);
Bitmap thumBitmap = ThumbnailUtils.extractThumbnail(bitmap, 1024, 1024);
//ImageUtil.saveJpeg(thumBitmap);
//发送给客户端
DataOutputStream dos = new DataOutputStream(MyThread.mSocketServer.getOutputStream());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
thumBitmap.compress(Bitmap.CompressFormat.JPEG, 85, baos);
//Log.i(tag, "baos.size() " + baos.size());
dos.writeInt(baos.size());
byte[] bytes = baos.toByteArray();
dos.write(bytes);
//dos.writeUTF(name);//写进去名字
dos.flush(); } catch (IOException e) {
e.printStackTrace();
}
}
这是接收端
public static void receivemessage() {
mThreadClient1=new Thread(new Runnable() {
@Override
public void run() {
try {
DataInputStream is = new DataInputStream(MyThread.mSocketClient.getInputStream());
int size = is.readInt(); //得到byte的长度
byte[] buffer = new byte[size];
int len = 0;
while(len < size){
len += is.read(buffer, len, size-len);
}
Bitmap bitmap = BitmapFactory.decodeByteArray(buffer, 0, buffer.length);
if(bitmap == null){
// Log.i(tag, "服务器:bitmap为空");
}
// String name = is.readUTF();
// ImageUtil.saveJpeg(bitmap, name);
String fileName = System.currentTimeMillis() + ".jpg";
File pictureFile = new File(getDir(),fileName);
FileOutputStream fos = new FileOutputStream(pictureFile);
bitmap.compress(Bitmap.CompressFormat.PNG,1, fos);
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
mThreadClient1.start();
}
这是logcat