В этом примере используется конкретный код для клиента реализации Java для отправки файлов на сервер для вашей ссылки. Конкретный контент заключается в следующем
Исходный код сервера:
Импорт java.io.bufferedReader; Импорт java.io.file; Импорт java.io.filenotFoundException; Импорт java.io.fileOutputStream; импортировать java.io.ioexception; Импорт java.io.inputStreamReader; импортировать java.net.serversocket; импортировать java.net.socket; /*** Имя файла: ServerReceive.java* Функция реализации: в качестве сервера получает файлы, отправляемые клиентом** Конкретный процесс реализации:* 1. Установите SocketServer и ожидайте, что клиент подключится* 2. Когда есть клиентское соединение, в соответствии с соглашением между двумя сторонами, вы должны прочитать строку данных*, которые сохраняют имя файла и файловое значение, чтобы быть отправленным по клиенту. Коммуникация* 4. Получайте пакеты данных в цикле и запишите пакеты данных в файл* 5. Когда длина полученных данных равна длине файла, отправленного файлом заранее, это означает, что файл был получен и файл закрыт* 6. Работа по приему файла превышает*** Передача и отток файла могут быть размещены само по себе в соответствии с вашей собственной программой] * * * * * * Сокет s = null; / ** Определить объекты файла и объекты вывода файла, созданные локально после приема*/ file file = null; FileOutputStream fos = null; / ** Определите входные потоки и используйте InputStream Socket для ввода пакета*/ inputStream IS = null; / ** Определить байтовые массивы, чтобы служить пакетами хранения для пакетов*/ byte [] buffer = new Byte [4096*5]; / ** Stand String, используемая для получения запросов отправки файла*/ string comm = null; / ** Установите связь Socekt и подождите, пока сервер подключится*/ try {ss = new Serversocket (4004); s = ss.accept (); } catch (ioException e) {e.printstackTrace (); } / ** Прочитайте информацию о соглашении, отправленная строкой клиентов* / try {inputStreamReader ISR = new InputStreamReader (S.GetInputStream ()); BufferedReader BR = новый BufferedReader (ISR); comm = br.readline (); } catch (ioException e) {System.out.println ("Сервер отключается от клиента"); }/** Запустить команду запроса, отправленная клиентом*/int index = comm.indexof ("/#"); / ** Обсудите, является ли протокол протоколом для отправки файлов*/ string xieyi = comm.substring (0, index); if (! xieyi.equals ("111")) {System.out.println ("Код протокола, полученный сервером, неверен"); возвращаться; } / ** Распоряжение имени и размер файла* / comm = comm.substring (index + 2); index = comm.indexof ("/#"); String fileName = comm.substring (0, index) .trim (); String filesize = comm.substring (index + 2) .trim (); / ** Создать пустой файл для получения файла*/ file = new File (fileName); if (! file.exists ()) {try {file.createnewfile (); } catch (ioException e) {System.out.println ("Не удалось создание файла на стороне сервера"); }} else { / ** Вы также можете спросить, перезаписать ли* / system.out.println («Тот же файл уже существует в этом пути, перезапись»); } / **. long file_size = long.parselong (filesize); is = s.getinputstream (); / ** Размер - это длина каждого полученного пакета*/ int size = 0; / ** Счет используется для записи длины полученного файла*/ long count = 0; / ** Получить пакеты с использованием while lop*/ while (count <file_size) {/ ** Читать пакет из входного потока*/ size = is.read (buffer); / ** Напишите пакет, который вы только что прочитали в локальный файл*/ fos.write (буфер, 0, размер); fos.flush (); / ** Длина полученного файла +размер*/ count += size; System.out.println («Сервер получил пакет, размер» + размер); }} catch (filenotfoundexception e) {System.out.println («Сервер не удалось написать файл»); } catch (ioException e) {System.out.println ("Сервер: клиент отключить"); } наконец { / *** Закройте открытый файл* При необходимости вы также можете закрыть соединение сокета здесь** / try {if (fos! = null) fos.close (); } catch (ioException e) {e.printstackTrace (); } // catch (ioException e)} // Наконец} // public static void main (string [] args)} // public class serverReceiveКлиентский исходный код:
Импорт java.io.file; импортировать java.io.fileinputstream; Импорт java.io.filenotFoundException; импортировать java.io.ioexception; импортировать java.io.outputstream; Импорт java.io.printstream; импортировать java.net.socket; /** * * * Имя файла: clientsend.java * Функция реализации: Отправить файл на сервер в качестве клиента * * Конкретный процесс реализации: * 1. Создайте соединение с сервером, IP: 127.0.0.1, порт: 4004 * 2. Отправьте имя и размер файла на сервер. используется только для демонстрации передачи файла между клиентом и сервером. * Перед каждым пакетом данных не существует команды протокола файлов * Конкретная передача протокола и этап исходящего использования файлов может быть размещена в соответствии с вашей собственной программой] * * * * Автор: Новичок * Время создания: 2014-08-19 * * *// Public Class Clientsend {public static void main (string [] args) {/ ** Компалмент Руководство для установления соединения с сервером */ socket s = null; /** Определите объект файла, то есть файл, который должен быть отправлен*Если вы используете абсолютный путь, не забудьте использовать разницу между '/' и '/' ** для конкретных различий, пожалуйста, Reader Query сами**/file sendfile = new File ("api.chm"); / ** Определите поток ввода файла, чтобы открыть и прочитать файл для отправки*/ fileInputStream fis = null; / ** Определите байтовые массивы для использования в качестве пакета хранения пакета данных*/ byte [] buffer = new Byte [4096*5]; / ** Определите выходной поток и используйте OutputStream Socket, чтобы вывести пакет*/ outputStream OS = NULL; / ** Проверьте, существует ли отправленный файл*/ if (! Sendfile.exists ()) {System.out.println ("Client: файл, который для отправки не существует"); возвращаться; } / ** Создать соединение с сервером* / try {s = new Socket ("127.0.0.1", 4004); } catch (ioException e) {System.out.println ("не подключен к серверу"); } / ** Инициализировать объект FIS с помощью объекта файла*, чтобы размер файла можно было извлечь** / try {fis = new FileInputStream (sendFile); } catch (filenotfoundexception e1) {e1.printstacktrace (); } /** Сначала сначала отправьте информацию о файле на сервер, чтобы облегчить сервер для получения соответствующих подготовков*Для конкретных подготовков, пожалуйста, проверьте код сервера. * * Отправленный контент включает в себя: Отправка кода протокола файла (здесь 111)/#Имя файла (с именем суффикса)/#Размер файла * */try {printStream ps = new PrintStream (s.getOutputStream ()); ps.println ("111/#" + sendfile.getName () + "/#" + fis.available ()); ps.flush (); } catch (ioException e) {System.out.println ("Прерывание подключения к серверу"); } / *** Спи здесь в течение 2 секунд, ожидая, пока сервер подготовит соответствующую работу* также для обеспечения задержки сети* Читатели могут добавить этот код** / try {thread.sleep (2000); } catch (прерывание Exception e1) {e1.printstackTrace (); } / ** После того, как предыдущая работа подготовки завершена*Ниже приведен код ключа для передачи файла** / try { / ** Получите выходное средство от сокета, чтобы написать пакет в него* / os = s.getOutputStream (); / ** Размер используется для записи размера каждого файла чтения*/ int size = 0; / ** Прочтите файл, используя цикл, пока чтение файла не будет завершено*/ while ((size = fis.read (buffer))! = -1) {System.out.println («Клиент отправляет пакет, размер - + размер); / ** Напишите пакет, который вы только что читаете в выходной поток*/ os.write (буфер, 0, размер); / ** Обновить*/ os.flush (); }} catch (filenotFoundException e) {System.out.println ("ошибка файла чтения клиента"); } catch (ioException e) {System.out.println ("Ошибка вывода клиента"); } наконец { / *** Закройте открытый файл* При необходимости вы также можете закрыть соединение сокета здесь** / try {if (fis! = null) fis.close (); } catch (ioException e) {System.out.println ("Ошибка закрытия клиентского файла"); } // catch (ioException e)} // наконец} // public static void main (string [] args)} // public class clientsendВыше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.