Android socket 客户端本地发图片给服务端接受保存到本地

客户端第一步

 private boolean bool;

handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                switch (msg.what) {
                     case 1:
                        connectTv.setText(bool + "");//显示true就是连接成功
                        break;
                }
            }
        };

 //判断是否和服务器连接成功
            case R.id.connect_bu:
                new Thread() {
                    @Override
                    public void run() {
                        super.run();
                        try {
                            socket = new Socket("192.168.1.54 ", 8756);
                            bool = socket.isConnected();
                            Message message = new Message();
                            message.what = 1;
                            message.obj = bool;
                            handler.sendMessage(message);
                           // socket.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }.start();
                break;

第二步发送图片给服务器

 case R.id.so_img:
                try {
                    DataOutputStream out = new DataOutputStream(socket.getOutputStream());
                    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.lu 

);
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    bitmap.compress(Bitmap.CompressFormat.PNG,100,baos);
                    long len  = baos.size();
                    Log.i("MainActivity_","图片长度="+len);

                    out.writeLong(len);
                    out.write(baos.toByteArray());
                    //out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;

打印图片的长度

服务器端第一步

public static void main(String[] arges)  {

     
        try {
            /*-------------接受客户端图片数据----------------*/
            System.out.println("开始接收信息");
            ServerSocket server_so_img = new ServerSocket(8756);
            Socket socket = server_so_img.accept();
            DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());
            new Thread(){
                @Override
                public void run() {
                    super.run();
                    while (true){

                        try {
                            long len = 0;
                            len = dataInputStream.readLong();
                            System.out.println("接受客户端图片长度 = "+ len);
                            byte[] bytes = new byte[(int) len];
                            dataInputStream.readFully(bytes);

                            File file = new File("C:\\img\\"+len+".png");
                            FileOutputStream fileOutputStream = new FileOutputStream(file);
                            fileOutputStream.write(bytes);
                            System.out.println("ok,保持到文件目录");

//                            dataInputStream.close();
//                            socket.close();
//                            server_so_img.close();

                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }.start();


        } catch (IOException e) {
            e.printStackTrace();
        }


    }

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值