Во-первых, создать на стороне сервера
общественный класс DownloadServer { общественного статический недействительный основной (String [] арг) бросает исключение { ServerSocket сервер = новый новый в ServerSocket (55021 ), в то время как ( истина ) { Оправа = server.accept (); System.out.println ( «соединение установлено ! " ); // создать персонаж , отправленный клиентом , чтобы принять входной поток объекта BufferedReader бр = новый новый BufferedReader ( новый новый InputStreamReader (Socket.getInputStream ())); // создать объект выходного потока символов PrintWriter Pw = новый PrintWriter (socket.getOutputStream ()); StringBuilder SBU = новый StringBuilder (); Указатель на строку = br.readLine (); если (s.equals ( "изображение" )) { // 创建文件对象 файл File = новый файл ( "Сервис" ); Файл [] файлы = file.listFiles (); для (Файл F: файлы) { System.out.print (f.getName () + "\ т" ); sbu.append (f.getName () + "" ); } pw.println (SBU); pw.flush (); br.close (); pw.close (); } еще { Файл = новый новый файл ( "-Service /" + S); // создать двоичные объекты входного потока, читать файлы в каталоге DataInputStream DIS = новый новый DataInputStream ( новый новый FileInputStream (файл)); // создать двоичный объект выходного потока, клиент отправляет данные в DataOutputStream DOS = новые новые DataOutputStream (Socket.getOutputStream) (); байт [] байт = новый новый байты [1024]; Int данных; // прочитать каталог файла клиент выводит двоичный поток в то время как ((= dis.read данных (байты)) = - 1.! ) { Dos.write (байты 0 , данные); } dos.close (); dis.close (); br.close (); Socket.close (); } } } }
Во-вторых, создать клиент
общественный класс DownloadClient { статическое гнездо, общественный статический недействительный основной (String [] арг) бросает исключение { Scanner ВХОД = новый новый сканер (System.in); System.out.println ( .. «1. Изображение \ T2 видео \ Музыка T3 " ); из System.out.print ( " Пожалуйста , выберите номер: " ); INT NUM = input.nextInt (); переключатель (NUM) { случай . 1 : String [] STR = GetName (); для ( межд. 1 = I, I <= str.length; я ++ ) { из System.out.print (I + "" + СТР [1 -I.] + "\ Т" ); } из System.out.print ( «\ п-пожалуйста , выберите номер , который вы хотите загрузить изображение: " ); INT num2 = input.nextInt (); загрузки (STR [num2 -1 ]); BREAK ; Случай 2 : BREAK ; случай . 3 : BREAK ; } } общественности статической String [] GetName () бросает исключение { // Создание объекта сокета сокет = новый новый сокет ( "127.0.0.1", 55021 ); PrintWriter PW = новый новый PrintWriter (Socket.getOutputStream ()); pw.println ( "Image" ); pw.flush (); // Получает сервер передачи данных через к BufferedReader бр = новый новый BufferedReader ( новый новый InputStreamReader (Socket.getInputStream ())); Строка S = br.readLine (); br.close (); pw.close (); Socket.close (); вернуться ДЕЛЕНИЕМ ( «» ); } публичного статического вакуумзагрузки (имя String) бросает исключение { сокет = новый новый сокет ( "127.0.0.1", 55021 ), в PrintWriter PW = NULL ; DataInputStream DIS = NULL ; в DataOutputStream DOS = NULL ; Попробовать { // создать выходной поток, и передается для загрузки название изображения Pw = новый новый PrintWriter (Socket.getOutputStream ()); pw.println (имя); pw.flush (); // принимает клиент послал двоичный поток СОП = новый новыйDataInputStream (Socket.getInputStream ()); // путь к файлу и режим записи для записи DOS = новый новый DataOutputStream ( новый новый FileOutputStream ( "загрузки /" + имя, истина )); байт [] байт = новый новый байт [1024 ] ; ИНТ данных; // прочитать двоичный поток и копируется в то время - ((= dis.read данных (байт)) = 1.! {) dos.write (байт 0 , данные); } } улов (Exception E) { E .printStackTrace (); } окончательно{ Попробуйте { dos.close (); dis.close (); pw.close (); socket.close (); } Задвижка (Исключение е) { e.printStackTrace (); } } } }