码迷,mamicode.com
首页 > 编程语言 > 详细

java 26 - 8 网络编程之 TCP协议上传图片

时间:2016-10-15 22:41:50      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

上次的是上传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 }

 

java 26 - 8 网络编程之 TCP协议上传图片

标签:

原文地址:http://www.cnblogs.com/LZL-student/p/5965366.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!