В этой статье используется конкретный код сервера загрузки файлов Java и клиента для вашей ссылки. Конкретный контент заключается в следующем
Сервер загрузки файлов:
/** * Server-side using TCP protocol to implement upload function* Ideas: * Create a new ServerSocket * Wait for the client to connect* After connecting, start the child thread, pass the Socket obtained by the connection to the child thread* Looping* @author yajun * */ public class UploadServer { public static void main(String[] args) { UploadServer server=new UploadServer(); UploadThread command = new uploadThread (); Server.Start (command); } /*** Функция: принять подключение, запустить дочерний поток, lo Транссколетка сокета; // бизнес -логика try {serversocket = new Serversocket (55555); while (true) {System.out.println («Подождите подключения ...»); transSocket = serversocket.accept (); int i = 0; i ++; System.out.println ("th"+i+"Connection"); // Вам нужно закрыть ветку после загрузки? ? ? command.setsocket (transsocket); Executors.newfixedthreadpool (5) .execute (command); } // exception catch} catch (ioException e) {e.printstacktrace (); // закрыть ресурс}, наконец, {try {serversocket.colose (); } catch (ioException e) {e.printstackTrace (); }} // end of Try} // end of Connect @Test public void testConnect () {// Тестовая задача: сначала запустите сторону сервера, затем запустите клиент несколько раз. Сегмент сервера может непрерывно создавать дочерние потоки, а тест успешно // Подготовка теста: Создайте поток для моделирования потока загрузки uploadThread Command = new uploadThread (); start (command); } @Test public void testdown () бросает ioException {byte [] buf; BytearrayinputStream bis; String str = "canglaoshi.avi/ncontent, content, content"; buf = str.getbytes (); bis = new BytearrayinputStream (BUF); UploadThread ut = new uploadThread (); ut.down (bis); }} // подтереч, которая завершает каждое класс передачи класса передачи uploadThread, реализует runnable {сокет сокета; public uploadThread () {} public uploadThread (Socket Socket) {this.socket = socket; } @Override public void run () {inputStream in; try {in = socket.getInputStream (); вниз (в); // обработка исключений} catch (ioException e) {e.printstacktrace (); } наконец {try {socket.close (); } catch (ioException e) {e.printstackTrace (); }} // тестовый код/*try {thread.sleep (5000); System.out.println (Thread.currentThread (). GetName ()+", copyname ()+"); } catch (прерванное искусство e) {e.printstacktrace (); }*/} // конец запуска public void setSocket (сокет сокета) {this.socket = socket; } // Скачать метод/*** Цель: Записать данные во входном потоке на локальную идею:* 1. Получить входной поток, лучше всего передать его во входном потоке вместо непосредственного получения его из сокета и передавать его для использования единичных тестов* 2. Читать имя файла из потока ввода* 3. down (inputstream in) бросает ioException {// локальная переменная char ch; char [] namearr = new char [256]; byte [] buf = new Byte [1024]; String name = ""; OutputStream Out = null; // бизнес -логика Try {// Шаг 1: Получить имя файла и построить выходной поток файла int i = 0; while ((ch = (char) in.read ())! = '/n') {namearr [i ++] = ch; } //name=namearr.tostring() ;//this предложение не может преобразовать массив символов в строку. Вам нужно использовать следующее имя оператора = new String (namearr); System.out.println («Файл для загрузки:»+name); out = new FileOutputStream ("src // down //"+name); // Шаг 2: Напишите другое содержимое в потоке ввода в файл int len; while ((len = in.read (buf))! =-1) {out.write (buf, 0, len); } out.flush (); // захват исключений} catch (ioexception e) {e.printstacktrace (); // закрыть ресурс} Наконец {// Вопрос: можно ли собрать два захвата? Как справиться со исключениями при закрытии потока? in.close (); out.close (); } // Debug System.out.println (name); }} // end of uploadThread Загрузить файл клиент:
/ *** Клиент, который использует протокол TCP для реализации функции загрузки* @author yajun*/ public class uploadclient {public static void main (string [] args) {uploadclient client = new uploadClient (); client.upload ("src // четверг // aslisttest.java"); } / *** Функция: загрузить файл на сервер* 1. Установить соединение с сервером* 2. Получить выходной поток* 3. Напишите содержимое файла в выходной поток* 4. Получить ответ сервера* / private void upload (string name) {socket socket = null; OutputStream; try {socket = new Socket ("127.0.0.1", 5555); out = socket.getOutputStream (); write2outputstream (имя, out); // захват исключений} catch (Unknownhostexception e) {e.printstacktrace (); } catch (ioException e) {e.printstackTrace (); }} @Test public void testupload () {upload ("src // status.xml"); } / ** * Функция: пройти в имени файла и вывода, напишите файл в выходной поток * @param path * @throws ioexception * / private void write2outputstream (String Path, outputStream Out) Throws IoException {fileInputStream fis = null; byte [] buf = new Byte [1024]; String filename = ""; // Бизнес -логика попробуйте {// 1. Напишите имя файла файла = path.substring (path.lastindexof ('//')+1); System.out.println («Имя файла, которое вы хотите загрузить,:»+filename); out.write (filename.getbytes ()); out.write ('/n'); // 2. Напишите содержимое файла fis = new FileInputStream (path); int len; while ((len = fis.read (buf))! =-1) {out.write (buf, 0, len); } out.flush (); // обработка исключений} catch (ioException e) {e.printstacktrace (); // закрыть ресурс} наконец {fis.close (); out.close (); }} // Конец загрузки @test public void testwrite2outputstream () бросает ioException {bytearrayOutputStream out = null; try {out = new BytearrayOutputStream (); write2outputstream ("src // status.xml", out); System.out.println (out.tostring ("utf-8")); } catch (ioException e) {e.printstackTrace (); } наконец {out.close (); }}}Эта статья была составлена в «Краткое описание методов операции загрузки Java», и все могут учиться и прочитать.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.