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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 金肖 中级黑马   /  2012-5-10 20:16  /  2588 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/**
客户端,本来图片为 120KB,上传后变成122KB,求解呀!
*/

public class UploadFileClient {

        public static void main(String[] args) throws IOException {
                //1.创建Socket客户端服务对象
                Socket s = new Socket("127.0.0.1",10051);
               
                System.out.println("客户端启动!");
               
                //System.out.println(InetAddress.getLocalHost());
               
                //2.创建源,硬盘上的文件
               
                BufferedInputStream bufr = new BufferedInputStream(new FileInputStream("D:\\a.jpg"));
                //3.获取Socket输出流
               
                BufferedOutputStream bufout = new BufferedOutputStream(s.getOutputStream());
                OutputStream out = s.getOutputStream();
                //4.定义缓冲区
                int len = 0;
               
                //5.将文件写入进Socket流中
               
                while((len = bufr.read())!=-1)
                {
                        bufout.write(len);
                }
               
                //告诉服务端数据写完了
                s.shutdownOutput();
               
                //6.获取服务端的反馈信息
                BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));
                String line = bufin.readLine();
               
               
                System.out.println(line);
               
                //7.关闭流
               
                bufr.close();
                bufout.close();
               
        }
}
/**
服务端
*/

public class UploadFileServer {
public static void main(String[] args) throws IOException {
  // 1.创建服务端对象
  ServerSocket ss = new ServerSocket(10051);
  System.out.println("服务端启动!");
  // 2.监听客户端
  Socket s = ss.accept();
  System.out.println(s.getLocalAddress());
  System.out.println(s.getInetAddress());
  // 3.获取客户端中读取流
  BufferedInputStream bufin = new BufferedInputStream(s.getInputStream());
  // 4.创建目的地的,输入流
  BufferedOutputStream bufw = new BufferedOutputStream(
    new FileOutputStream("E:\\aa.jpg"));
  // 5.读取Socket流中数据,将数据写到目的地中
  int len = 0;
  while ((len = bufin.read()) != -1) {
   bufw.write(len);
  }
  // 6.将上传的结果反馈给客户端
  PrintWriter pwout = new PrintWriter(s.getOutputStream(), true);
  pwout.println("上传成功!");
  // 7.关闭资源
  bufw.close();
  s.close();
}
}



评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
我没有遇到过,你的问题有点灵异,不太相信。
回复 使用道具 举报
我测试了一下,图片大小没有变大。但是,通过属性查看图片,图片的占用空间可能变大或者变小。
回复 使用道具 举报
本帖最后由 小小企鹅 于 2013-3-1 09:09 编辑

public class UploadFileClient {

        public static void main(String[] args) throws IOException {
                //1.创建Socket客户端服务对象
                Socket s = new Socket("127.0.0.1",10051);
               
                System.out.println("客户端启动!");
               
                //System.out.println(InetAddress.getLocalHost());
               
                //2.创建源,硬盘上的文件
               
                BufferedInputStream bufr = new BufferedInputStream(new FileInputStream("D:\\a.jpg"));
                //3.获取Socket输出流
               
                BufferedOutputStream bufout = new BufferedOutputStream(s.getOutputStream());
                OutputStream out = s.getOutputStream();
                //4.定义缓冲区
                int len = 0;
               
                //5.将文件写入进Socket流中
               
                while((len = bufr.read())!=-1)
                {
                        bufout.write(len);
                }
                bufr.close();
                bufout.close();
                //告诉服务端数据写完了
                s.shutdownOutput();
               
                //6.获取服务端的反馈信息
                BufferedReader bufin = new BufferedReader(new InputStreamReader(s.getInputStream()));
                String line = bufin.readLine();
               
               
                System.out.println(line);
               
                //7.关闭流
               

               
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马