Android的socket通信基本实现请参考:
https://blog.csdn.net/Sunxiaolin2016/article/details/90715331

在文章《Android P的Socket通信实现》中主要实现了一个socket通信,通过读写一个txt文本去传输一些数据信息。

本文主要记录传输一张图片信息。

一、创建客户端

    protected void connectSocket() {        Socket socket;        try {            // 创建一个Socket对象,并指定服务端的IP及端口号            socket = new Socket("127.0.0.1", 9821);                        DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());            //发送的图片为demo.jpg,将bitmap转为字节数组            Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.demo);            ByteArrayOutputStream bout = new ByteArrayOutputStream();            bitmap.compress(Bitmap.CompressFormat.PNG,100,bout);//写入字节的长度,再写入图片的字节            long len = bout.size();//这里打印一下发送的长度            Log.i("sendImgMsg", "len: "+len);            outputStream.writeLong(len);            outputStream.write(bout.toByteArray());//发送成功            Log.i("ServerReceviedByTcp","outputStream.write ok" );            // 发送读取的数据到服务端            outputStream.flush();        } catch (UnknownHostException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }

二、创建服务器端

    public void createServerRecevied() {        // 声明一个ServerSocket对象        ServerSocket serverSocket = null;        try {            // 创建一个ServerSocket对象,并让这个Socket在9821端口监听            serverSocket = new ServerSocket(9821);            // 调用ServerSocket的accept()方法,接受客户端所发送的请求,            // 如果客户端没有发送数据,那么该线程就停滞不继续            Socket socket = serverSocket.accept();            DataInputStream inputStream = new DataInputStream(socket.getInputStream());            //同样是先读长度            long len = inputStream.readLong();            System.out.println("len = " + len);            byte[] bytes = new byte[(int) len];            //然后在读这个长度的字节到字节数组            inputStream.readFully(bytes);            //将独到的内容保存为文件到本地            File file = new File("/data/local/tmp/" + len + ".png");            FileOutputStream fileOutputStream = new FileOutputStream(file);            fileOutputStream.write(bytes);            //接收成功 在/data/local/tmp/下面可以看到生成的png格式图片            Log.i("ServerReceviedByTcp","fileOutputStream.read ok" );            serverSocket.close();        } catch (IOException e) {            e.printStackTrace();        }    }

三、总结

需要修改/data/local/tmp/的权限,否则保存图片失败。
adb shell chmod 777 /data/local/tmp

更多相关文章

  1. ItemTouchHelper.Callback实现仿朋友圈发布图片拖拽排序
  2. android 手势屏幕平移图片转换效果(也可以平移文本)
  3. Android 如何更换屏幕上锁界面背景图片
  4. 管理图片缓存
  5. android 图片透明
  6. Android实现图片轮播
  7. Android图片左右切换和拖动大小
  8. Android支持的图片格式
  9. Android——插入图片【ImageView】属性详解

随机推荐

  1. Mysql数据库值的添加、修改、删除及清空
  2. 新手入门Mysql--概念
  3. MySQL 外键约束和表关系相关总结
  4. MySQL 使用索引扫描进行排序
  5. [置顶] Android上传文件到Web服务器,PHP接
  6. Android关机流程解析
  7. Android(安卓)技巧 - listview 里面的图
  8. Android(安卓)中加入SD card 应用
  9. Android(安卓)去掉标题栏,状态栏,导航栏
  10. android 布局