android客户端和java服务端之间用socket来传输图片

文章出处:

一、从服务端向客户端发送图片:

服务端的代码:

import java.io.DataOutputStream;    
import java.io.FileInputStream;    
import java.io.IOException;      
import java.net.ServerSocket;    
import java.net.Socket;    
 
public class Server01 {    
   public static void main(String[] args) {    
       try {    
            ServerSocket server = new ServerSocket(30000);    
            Socket socket = server.accept();    
            DataOutputStream dos = new DataOutputStream(socket.getOutputStream());    
            FileInputStream fis = new FileInputStream("C:/sunnyTest/picture/cat01.jpg");    
            int size = fis.available();  
              
            System.out.println("size = "+size);  
            byte[] data = new byte[size];    
            fis.read(data);    
            dos.writeInt(size);    
            dos.write(data);    
              
            dos.flush();    
            dos.close();    
            fis.close();    
            socket.close();    
            server.close();    
        } catch (IOException e) {    
            e.printStackTrace();    
        }    
    }    
}    

客户端的代码:   

      

import com.login.R;  
import android.app.Activity;    
import android.content.Intent;  
import android.graphics.Bitmap;    
import android.graphics.Bitmap.CompressFormat;    
import android.graphics.BitmapFactory;    
import android.os.Bundle;    
import android.os.Handler;    
import android.view.View;    
import android.view.View.OnClickListener;    
import android.widget.Button;    
import android.widget.ImageView;   
  
public class TestActivity extends Activity {    
        
    private ImageView imageView = null;    
    private Bitmap bmp = null;  
      
    private ImageView imageView02;  
    private Bitmap bmp02;  
    private Button button02;  
    private String uploadFile="/mnt/sdcard/qt.png";    
      
    /** Called when the activity is first created. */    
    @Override    
    public void onCreate(Bundle savedInstanceState) {    
       super.onCreate(savedInstanceState);    
        setContentView(R.layout.image);    
   
        imageView = (ImageView) findViewById(R.id.image01);    
        Button btn = (Button) findViewById(R.id.Button01);    
        btn.setOnClickListener(new OnClickListener() {    
            public void onClick(View v) {    
                  
                Socket socket = null;    
                try {    
                    socket = new Socket("192.168.1.203", 30000);    
                    DataInputStream dataInput = new DataInputStream(socket.getInputStream());    
                    int size = dataInput.readInt();    
                    byte[] data = new byte[size];    
                    int len = 0;    
                    while (len < size) {    
                        len += dataInput.read(data, len, size - len);    
                    }    
                    ByteArrayOutputStream outPut = new ByteArrayOutputStream();    
                    bmp = BitmapFactory.decodeByteArray(data, 0, data.length);    
                    bmp.compress(CompressFormat.PNG, 100, outPut);    
                    imageView.setImageBitmap(bmp);    
                     
                    //Bitmap bitmap = BitmapFactory.decodeStream(dataInput);  
                    //myHandler.obtainMessage().sendToTarget();    
                } catch (IOException e) {    
                    e.printStackTrace();    
                }   
                finally {    
                    try {    
                        socket.close();    
                    } catch (IOException e) {    
                        e.printStackTrace();    
                    }    
                }    
                    }    
        });  
 }    
 }    

二、客户端向服务端发送图片的代码:

服务端:

import java.io.DataInputStream;  
import java.io.DataOutputStream;    
import java.io.FileInputStream;    
import java.io.IOException;    
import java.net.InetSocketAddress;    
import java.net.ServerSocket;    
import java.net.Socket;    
  
public class Server02 {    
    public static void main(String[] args) {    
        try {    
            ServerSocket server = new ServerSocket(40000);    
            Socket socket = server.accept();    
            DataInputStream dos = new DataInputStream(socket.getInputStream());    
            int len = dos.available();   
            System.out.println("len = "+len);  
            byte[] data = new byte[len];    
            dos.read(data);  
              
            System.out.println("data = "+data);  
            dos.close();    
            socket.close();    
            server.close();    
        } catch (IOException e) {    
            e.printStackTrace();    
        }    
    }    
}    

客户端:

imageView02 = (ImageView)findViewById(R.id.image02);  
       button02 = (Button)findViewById(R.id.Button02);  
       button02.setOnClickListener(new OnClickListener(){  
        public void onClick(View arg0) {  
            Socket socket;  
            try {  
                socket = new Socket("192.168.1.203",40000);  
                DataOutputStream out = new DataOutputStream(socket.getOutputStream());   
                  
                Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.qt);  
                imageView02.setImageBitmap(bitmap);  
                ByteArrayOutputStream baos = new ByteArrayOutputStream();  
                //读取图片到ByteArrayOutputStream                      
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);  
                byte[] bytes = baos.toByteArray();  
                out.write(bytes);  
                  
                System.out.println("bytes--->"+bytes);  
                out.close();  
                socket.close();  
            } catch (UnknownHostException e) {  
                e.printStackTrace();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }             
    });  
         
   }    

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值