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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 廉伟 中级黑马   /  2012-9-4 18:53  /  1014 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 廉伟 于 2012-9-4 22:43 编辑

  1. import java.io.*;
  2. import java.net.*;
  3. class  PicClient
  4. {
  5. public static void main(String[] args)throws Exception
  6. {
  7.   if(args.length!=1)
  8.   {
  9.    System.out.println("请选择一个jpg格式的图片");
  10.    return ;
  11.   }



  12.   File file = new File(args[0]);
  13.   if(!(file.exists() && file.isFile()))
  14.   {
  15.    System.out.println("该文件有问题,要么补存在,要么不是文件");
  16.    return ;

  17.   }

  18.   if(!file.getName().endsWith(".jpg"))
  19.   {
  20.    System.out.println("图片格式错误,请重新选择");
  21.    return ;
  22.   }

  23.   if(file.length()>1024*1024*5)
  24.   {
  25.    System.out.println("文件过大,没安好心");
  26.    return ;
  27.   }
  28.   


  29.   Socket s = new Socket("192.168.1.254",10007);

  30.   FileInputStream fis = new FileInputStream(file);

  31.   OutputStream out = s.getOutputStream();

  32.   byte[] buf = new byte[1024];

  33.   int len = 0;

  34.   while((len=fis.read(buf))!=-1)
  35.   {
  36.    out.write(buf,0,len);
  37.   }

  38.   //告诉服务端数据已写完
  39.   s.shutdownOutput();

  40.   InputStream in = s.getInputStream();

  41.   byte[] bufIn = new byte[1024];

  42.   int num = in.read(bufIn);
  43.   System.out.println(new String(bufIn,0,num));

  44.   fis.close();
  45.   s.close();
  46. }
  47. }




  48. class PicThread implements Runnable
  49. {

  50.         private Socket s;
  51.         PicThread(Socket s)
  52.         {
  53.                 this.s = s;
  54.         }
  55.         public void run()
  56.         {

  57.                 int count = 1;
  58.                 String ip  = s.getInetAddress().getHostAddress();
  59.                 try
  60.                 {
  61.                         System.out.println(ip+"....connected");

  62.                         InputStream in = s.getInputStream();

  63.                         File dir =  new File("d:\\pic");

  64.                         File file = new File(dir,ip+"("+(count)+")"+".jpg");

  65.                         while(file.exists())
  66.                                 file = new File(dir,ip+"("+(count++)+")"+".jpg");

  67.                         FileOutputStream fos = new FileOutputStream(file);

  68.                         byte[] buf = new byte[1024];

  69.                         int len = 0;
  70.                         while((len=in.read(buf))!=-1)
  71.                         {
  72.                                 fos.write(buf,0,len);
  73.                         }

  74.                         OutputStream out = s.getOutputStream();

  75.                         out.write("上传成功".getBytes());

  76.                         fos.close();

  77.                         s.close();
  78.                 }
  79.                 catch (Exception e)
  80.                 {
  81.                         throw new RuntimeException(ip+"上传失败");
  82.                 }
  83.         }
  84. }



  85. class  PicServer
  86. {
  87.         public static void main(String[] args) throws Exception
  88.         {
  89.                 ServerSocket ss = new ServerSocket(10007);

  90.                 while(true)
  91.                 {
  92.                         Socket s = ss.accept();

  93.                         new Thread(new PicThread(s)).start();

  94.                
  95.                 }

  96.                 //ss.close();
  97.         }
  98. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马