zoukankan      html  css  js  c++  java
  • java 26

    上次的是上传TXT文件,这次上传的是图片。同样,上传成功需要反馈给客户端。

    区别:

      TXT文件用记事本打开,我们可以看得懂,所以用了缓冲字符流,对通道内的字节流进行包装了。

      而图片用记事本打开,我们看不懂,所以就用缓冲字节流,只需要把通道内的字节流转换成高效字节流就可以了。

    客户端:

      

     1 public class ClineDemo {
     2     public static void main(String[] args) throws IOException {
     3 
     4         // 创建Socket对象
     5         Socket s = new Socket("172.19.12.233", 10010);
     6 
     7         // 封装图片,图片只能使用字节流,为了高效,用缓冲字节流
     8         BufferedInputStream bi = new BufferedInputStream(new FileInputStream(
     9                 "java程序员.jpg"));
    10 
    11         // 把通道中的字节流包装成缓冲字节流
    12         BufferedOutputStream bo = new BufferedOutputStream(s.getOutputStream());
    13 
    14         // 接收图片,并发送给服务器
    15         byte[] bys = new byte[1024];
    16         int len = 0;// 读取的实际长度,没有数据时,为-1
    17         while ((len = bi.read(bys)) != -1) {
    18             bo.write(bys, 0, len);
    19             bo.flush();
    20         }
    21 
    22         // 提醒服务器已经读取完毕,终止
    23         s.shutdownOutput();
    24 
    25         // 接收反馈
    26         InputStream in = s.getInputStream();
    27         byte[] by = new byte[1024];
    28         //肯定有内容的,就不判断了
    29         int len1 = in.read(by);
    30         String str = new String(by,0,len1);
    31         System.out.println(str);
    32 
    33         // 释放资源
    34         bi.close();
    35         s.close();
    36     }
    37 }

    服务器:

     1 public class ServerDemo {
     2     public static void main(String[] args) throws IOException {
     3 
     4         // 创建ServerSocket对象,监听
     5         ServerSocket ss = new ServerSocket(10010);
     6 
     7         // 创建Socket对象
     8         Socket s = ss.accept();
     9 
    10         // 把通道中的字节流转成缓冲字节流
    11         BufferedInputStream bi = new BufferedInputStream(s.getInputStream());
    12 
    13         // 封装图片目录
    14         BufferedOutputStream bo = new BufferedOutputStream(
    15                 new FileOutputStream("java.jpg"));
    16 
    17         // 获取图片的数据,并输出
    18         byte[] bys = new byte[1024];
    19         int len = 0;
    20         while ((len = bi.read(bys)) != -1) {
    21             bo.write(bys, 0, len);
    22             bo.flush();
    23         }
    24         
    25         //给客户端反馈
    26         OutputStream op = s.getOutputStream();
    27         op.write("图片上传成功".getBytes());
    28         
    29         //释放资源
    30         s.close();
    31         bo.close();
    32 
    33     }
    34 }
  • 相关阅读:
    Ajax省市区无刷新单表联动查询
    Hadoop2.0、YARN技术大数据视频教程
    零基础DNET B/S开发软件工程师培训视频教程
    零基础DNET CS开发视频教程
    HTML5开发框架PhoneGap实战视频教程
    Web前端开发视频教程
    FluentData 轻量级.NET ORM持久化技术详解
    前端 MVVM 框架KnockOut.JS深入浅出视频教程
    ASP.NET Web开发项目实战视频教程
    零基础到CS开发高手通用权限管理系统全程实录
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5965366.html
Copyright © 2011-2022 走看看