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

服务端:
  1. import java.io.BufferedReader;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.InputStreamReader;
  7. import java.io.PrintStream;
  8. import java.net.ServerSocket;
  9. import java.net.Socket;

  10. public class Server {

  11.         public static void main(String[] args) throws IOException {
  12.                 //创建服务器
  13.                 ServerSocket server = new ServerSocket(12345);
  14.                 //创建服务器的数据存储空间
  15.                 File dir = new File("data");
  16.                 dir.mkdir();
  17.                 //多线程接收连接
  18.                 while(true){
  19.                         final Socket socket = server.accept();
  20.                         System.out.println("连接");       
  21.                         new Thread(){
  22.                                 public void run() {
  23.                                         try {
  24.                                                 InputStream is = socket.getInputStream();
  25.                                                 BufferedReader br = new BufferedReader(new InputStreamReader(is));
  26.                                                 PrintStream ps = new PrintStream(socket.getOutputStream());
  27.                                                 //接收文件名
  28.                                                 File file = new File(dir,br.readLine());
  29.                                                 //判断并反馈客户端
  30.                                                 if(file.exists()){
  31.                                                         ps.println("1");
  32.                                                 }else{//文件不存在,则储存
  33.                                                         ps.println("0");
  34.                                                         FileOutputStream fos = new FileOutputStream(file);
  35.                                                         byte[] b = new byte[1024*4];
  36.                                                         int len;
  37.                                                         while((len=is.read(b))!=-1){
  38.                                                                 fos.write(b, 0, len);
  39.                                                         }
  40.                                                         fos.close();
  41.                                                 }
  42.                                                 //关闭socket,会自动关闭IO流
  43.                                                 socket.close();
  44.                                         } catch (IOException e) {
  45.                                                 e.printStackTrace();
  46.                                         }
  47.                                 };
  48.                         }.start();
  49.                 }
  50.         }
  51. }
复制代码


顾客端:
  1. import java.io.BufferedReader;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.PrintStream;
  7. import java.net.Socket;
  8. import java.util.Scanner;

  9. public class Client {

  10.         public static void main(String[] args) throws IOException{
  11.                 Scanner sc = new Scanner(System.in);
  12.                 File file;
  13.                 //键盘接一个路径,判断是否是文件
  14.                 System.out.println("请输入要上传的文件路径:");
  15.                 while(true){
  16.                         file = new File(sc.nextLine());
  17.                         if(file.exists()){
  18.                                 if(file.isFile()){
  19.                                         break;
  20.                                 }else{
  21.                                         System.out.println("这是一个文件夹路径,请重新输入一个文件路径:");
  22.                                 }
  23.                         }else{
  24.                                 System.out.println("输入的文件不存在!请重新输入:");
  25.                         }
  26.                 }
  27.                
  28.                 //发起连接
  29.                 Socket socket = new Socket("127.0.0.1", 12345);
  30.                 //打开输入输出流
  31.                 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  32.                 PrintStream ps = new PrintStream(socket.getOutputStream());
  33.                 //发送服务器
  34.                 ps.println(file.getName());
  35.                 //接收返回值
  36.                 String reponse = br.readLine();
  37.                 if(reponse.equals("1")){
  38.                         System.out.println("文件已存在于服务器!");
  39.                 }else{//文件不存在,则上传
  40.                         FileInputStream fis = new FileInputStream(file);
  41.                         byte[] b = new byte[1024*4];
  42.                         int len;
  43.                         while((len=fis.read(b))!=-1){
  44.                                 ps.write(b, 0, len);
  45.                         }
  46.                         fis.close();
  47.                 }
  48.                 //关闭连接
  49.                 socket.close();
  50.         }
  51. }
复制代码
您需要登录后才可以回帖 登录 | 加入黑马