A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 有陷阱快跑丶 中级黑马   /  2014-12-4 02:05  /  1274 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.*;
  2. import java.net.*;


  3. //上传图片 1.建立服务 2.读取图片 3.写入网络输出流 4 读取服务端反馈信息 5.关闭资源

  4. class Kehu
  5. {
  6.         public static void main(String[] args) throws Exception
  7.         {
  8.                 Socket s = new Socket("lanlan-PC",10006);
  9.                
  10.                 BufferedReader bffr = new BufferedReader(new InputStreamReader(new FileInputStream("1.jpg")));

  11.                 PrintWriter out = new PrintWriter(s.getOutputStream(),true);

  12.                 String line = null;

  13.                 while((line=bffr.readLine())!=null)
  14.                 {
  15.                         out.println(line);
  16.                 }

  17.                 s.shutdownOutput(); //关闭客户端网络输出流 相当于加了结束标记-1;

  18.                 BufferedReader bfin = new BufferedReader(new InputStreamReader(s.getInputStream()));
  19.                 String XT = bfin.readLine();  //read()阻塞  等服务端反馈
  20.                 System.out.println("XT: "+XT);

  21.                 bffr.close();
  22.                 s.close();

  23.         }
  24. }


  25. // 服务端: 1. 建立服务 2.获取客户端 3 读取网络输入流 4. 写入文件中 5 反馈信息“上传成功” 6.关闭资源


  26. class  Fuwu
  27. {
  28.         public static void main(String[] args) throws Exception
  29.         {
  30.                 ServerSocket ss = new ServerSocket(10006);
  31.                 Socket s = ss.accept();

  32.                 String IP = s.getInetAddress().getHostAddress();
  33.                 System.out.println(IP+".....已连接");


  34.                 BufferedReader bfin = new BufferedReader(new InputStreamReader(s.getInputStream()));

  35.                 PrintWriter out = new PrintWriter(new FileOutputStream("2.bmp"),true);
  36.                
  37.                 String line = null ;

  38.                 while((line=bfin.readLine())!=null)//read()阻塞 等客户端传输数据
  39.                 {
  40.                         out.println(line);
  41.                
  42.                 }

  43.                 PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
  44.                 pw.println("服务器已接收,上传成功 谢谢");

  45.                 out.close();
  46.                 s.close();
  47.                 ss.close();


  48.         }
  49. }
复制代码
我运行了下   发现图片字节变多了,无法打开了  - -   什么原因啊  难道是println()方法加入了 \r\n吗?:)

5 个回复

倒序浏览
你读取图片用的是BufferedReader。这个是字符流啊。应该用字节流
回复 使用道具 举报
xiaguangcheng 发表于 2014-12-4 11:03
你读取图片用的是BufferedReader。这个是字符流啊。应该用字节流

用了转换流的啊
回复 使用道具 举报
你试试不用println,可能因为换行,调试下
回复 使用道具 举报
船长 发表于 2014-12-4 12:26
你试试不用println,可能因为换行,调试下

恩恩  :)
回复 使用道具 举报
bfin.readLine()是读取一行,图片文件没有行的概念。所以要用字节流去读,写。你换用字节流就O了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马