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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 奋发吧小白 高级黑马   /  2014-11-6 16:44  /  932 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.net.*;
  2. public class Server {
  3.         public static void main(String[] args) throws Exception {
  4.                 //创建ServerSocket服务
  5.                 ServerSocket ss = new ServerSocket(9003);
  6.                 while(true)
  7.                 {
  8.                         //获取客户端对象
  9.                         Socket s = ss.accept();
  10.                         new Thread(new TreadUP(s)).start();
  11.                         System.out.println("sdas");
  12.                 }
  13.         }
  14.        
  15. }
复制代码
  1. import java.io.*;
  2. import java.net.*;
  3. public class Client {
  4.         public static void main(String[] args)throws Exception {
  5.                 //只能传入一个文件
  6.                 if(args.length!=1)
  7.                 {
  8.                         System.out.println("请选择一个.jp文件");
  9.                         return;
  10.                 }
  11.                 //把传入的文件封装成对象
  12.                 File file = new File(args[0]);
  13.                 //判断文件是否存在,并且文件后缀为.jpg
  14.                 if(!(file.exists()&&file.isFile()))
  15.                 {
  16.                         System.out.println("文件不存在或者不是文件");
  17.                         return;
  18.                 }
  19.                 //判断文件格式
  20.                 if(!(file.getName().endsWith(".jpg")))
  21.                 {
  22.                         System.out.println("文件格式不正确,应该选择文件格式为.jpg文件");
  23.                         return;
  24.                 }
  25.                 //判断文件大小
  26.                 if(file.length()>1024*104*5)
  27.                 {
  28.                         System.out.println("文件过大请重新选择,文件大小应该小于5M");
  29.                         return ;
  30.                 }
  31.                 //创建Socket服务
  32.                 Socket s = new Socket("192.168.0.107",9003);
  33.                 //获取Socket输出流
  34.                 BufferedOutputStream bufOut = new BufferedOutputStream(s.getOutputStream());
  35.                 //获取Socket读取流
  36.                 BufferedReader bufIn = new BufferedReader(
  37.                                 new InputStreamReader(s.getInputStream()));
  38.                 //读取硬盘文件流
  39.                 BufferedInputStream bis = new BufferedInputStream(
  40.                                 new FileInputStream(file));
  41.                 //将读取到的硬盘数据打印到服务端
  42.                 byte [] buf = new byte [1024];
  43.                 int len = 0;
  44.                 while((len = bis.read(buf))!=-1)
  45.                 {
  46.                         bufOut.write(buf, 0, len);
  47.                         bufOut.flush();
  48.                 }
  49.                 s.shutdownOutput();
  50.                 //接收服务端返回的数据
  51.                 String str = bufIn.readLine();
  52.                 System.out.println("Server:"+str);
  53.                 s.close();
  54.                 bis.close();
  55.         }
  56. }
复制代码
  1. import java.io.*;
  2. import java.net.*;
  3. public class TreadUP implements Runnable{
  4.         private Socket s;
  5.         public TreadUP(Socket s)
  6.         {
  7.                 this.s = s;
  8.         }
  9.         public void run()
  10.         {
  11.                 int count = 1;
  12.                 //获取客户端IP地址
  13.                 String IP = s.getInetAddress().getHostAddress();
  14.                 try {
  15.                         //把上传的文件按照IP地址命名
  16.                         File file = new File("D:\\",IP+"("+count+")"+".jpg");
  17.                         //判断文件是否存在,若是存在在后面(1)的形式重新命名
  18.                         while(file.exists())
  19.                         {
  20.                                 file = new File("D:\\",IP+"("+(count++)+")"+".jpg");
  21.                         }
  22.                         //获取客户端读取流
  23.                         BufferedInputStream bufIn = new BufferedInputStream(s.getInputStream());
  24.                         //获取客户端输出流
  25.                         BufferedWriter bufOut = new BufferedWriter(
  26.                                         new OutputStreamWriter(s.getOutputStream()));
  27.                         //把Socket流中的数据写入到文件
  28.                         BufferedOutputStream bos = new BufferedOutputStream(
  29.                                         new FileOutputStream(file));
  30.                         //循环读取客户端发送的数据
  31.                         byte [] buf = new byte[1024];
  32.                         int len = 0;
  33.                         while((len = bufIn.read(buf))!=-1)
  34.                         {
  35.                                 bos.write(buf, 0, len);
  36.                                 bos.flush();
  37.                         }
  38.                         s.shutdownInput();
  39.                         bufOut.write("上传成功!");
  40.                         bufOut.newLine();
  41.                         bufOut.flush();
  42.                         s.close();
  43.                         bos.close();
  44.                 } catch (Exception e) {
  45.                         throw new RuntimeException(IP+"上传失败");
  46.                 }       
  47.         }
  48. }
复制代码




0 个回复

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