Как передать файлы от одного компьютера до другого по сети с помощью Java?

Страницы, Вы перешли к хостингу каких-либо элементов управления ActiveX? Если да, один из тех может быть испорчен. Также проверьте свои страницы в IE. Посмотрите, разрушают ли они тот же путь. Это поможет изолировать, если это будет характерно для содержания или управления браузером.

11
задан jjnguy 10 July 2009 в 20:26
поделиться

9 ответов

Отправка и получение файлов

Отправка и получение файла в основном разбиты на два простых фрагмента кода.

Код получения:

ServerSocket serverSoc = new ServerSocket(LISTENING_PORT);

Socket connection = serverSoc.accept();

// code to read from connection.getInputStream();

Код отправки:

File fileToSend;
InputStream fileStream = new BufferedInputStream(fileToSend);

Socket connection = new Socket(CONNECTION_ADDRESS, LISTENING_PORT);
OutputStream out = connection.getOutputStream();

// my method to move data from the file inputstream to the output stream of the socket
copyStream(fileStream, out);

отправляющий фрагмент кода будет запущен на компьютере, который отправляет код, когда они хотят отправить файл.

Принимающий код должен быть помещен в цикл, чтобы каждый раз, когда кто-то хочет подключиться к серверу, сервер может обработать запрос, а затем вернуться в режим ожидания на serverSoc.accept ().

Чтобы разрешить отправку файлов между обоими компьютерами, каждый компьютер должен будет запустить сервер (принимающий код) для прослушивания входящих файлов, и они оба будут им нужно запустить код отправки, когда они хотят отправить файл.

Индикатор выполнения

JProgressBar в Swing достаточно прост в использовании. Однако, заставить его работать должным образом и отображать текущий прогресс передачи файла немного сложнее.

Чтобы индикатор выполнения отображался в форме, достаточно просто перетащить его на JFrame и, возможно, установить ] setIndeterminate (false) , чтобы показать, что ваша программа работает.

Чтобы правильно реализовать индикатор выполнения, вам нужно будет создать собственную реализацию SwingWorker . В учебных пособиях по Java есть хороший пример этого в их уроке по параллелизму .

Это довольно сложная проблема сама по себе. Я бы порекомендовал задать этот вопрос самим собой, если вам понадобится дополнительная помощь.

Чтобы индикатор выполнения отображался в форме, нужно всего лишь перетащить его в JFrame и, возможно, установить setIndeterminate (false) , чтобы показать, что ваша программа работает.

Чтобы правильно реализовать индикатор выполнения, вам нужно будет создать собственную реализацию SwingWorker . В учебных пособиях по Java есть хороший пример этого в их уроке по параллелизму .

Это довольно сложная проблема сама по себе. Я бы порекомендовал задать этот вопрос самим собой, если вам понадобится дополнительная помощь.

Чтобы индикатор выполнения отображался в форме, нужно всего лишь перетащить его в JFrame и, возможно, установить setIndeterminate (false) , чтобы показать, что ваша программа работает.

Чтобы правильно реализовать индикатор выполнения, вам нужно будет создать собственную реализацию SwingWorker . В учебных пособиях по Java есть хороший пример этого в их уроке по параллелизму .

Это довольно сложная проблема сама по себе. Я бы порекомендовал задать этот вопрос самим собой, если вам понадобится дополнительная помощь.

В учебных пособиях по Java есть хороший пример этого в их уроке по параллелизму .

Это довольно сложная проблема сама по себе. Я бы порекомендовал задать этот вопрос самим собой, если вам понадобится дополнительная помощь.

В учебных пособиях по Java есть хороший пример этого в их уроке по параллелизму .

Это довольно сложная проблема сама по себе. Я бы порекомендовал задать этот вопрос самим собой, если вам понадобится дополнительная помощь.

7
ответ дан 3 December 2019 в 06:22
поделиться

Вы можете написать его, используя программирование Socket на Java. Вам нужно будет написать серверную и клиентскую программу. Сервер будет использовать ServerSocket для прослушивания подключений, а Клиент будет использовать Socket для подключения к этому серверу через указанный порт.

Вот руководство: http://www.javaworld.com/jw- 12-1996 / jw-12-sockets.html

1
ответ дан 3 December 2019 в 06:22
поделиться

Two popular apps are "scp" and "rsync". These are standard on Linux, are generally available on Unix and can be run on Windows under cygwin, although you may be able to find windows-native apps that can do it as well. (PuTTY can serve as an SCP client).

For any sort of pc-to-pc file transfer, you need to have a listener on the destination PC. This can be a daemon app (or Windows system process), or it can be a Unix-style "superserver" that's configured to load and run the actual file-copy app when someone contacts the listening port.

SCP and one of the rsync modes do require that there be some sort of remote login capability. Rsync can also publish resources that it will handle directory. Since the concept of a Windows "remote login" isn't as well-established as it is under Linux, this may be preferable. Plus it limits remote access to defined sources/targets on the destination machine instead of allowing access to any (authorized) part of the filesystem.

0
ответ дан 3 December 2019 в 06:22
поделиться

Я настоятельно рекомендую использовать FTP. У Apache есть FTP клиент и сервер

Правка: предложение spdenne об использовании HTTP также хорошо, особенно если у всех есть Java 6. Если нет, вы можете использовать что-то вроде Tiny Java Веб-сервер .

3
ответ дан 3 December 2019 в 06:22
поделиться

Sun Java 6 включает облегченный API HTTP-сервера и его реализацию. Вы можете довольно легко использовать это для обслуживания вашего файла, используя URLConnection для его получения.

1
ответ дан 3 December 2019 в 06:22
поделиться

Посмотрите этот учебник, это действительно простой пример. Вы, вероятно, также захотите отправить заголовки элементов управления до фактической отправки файла, содержащие размер файла, имя файла и т. Д.

В качестве альтернативы, используйте существующий протокол, например этот проект.

0
ответ дан 3 December 2019 в 06:22
поделиться

Можете ли вы установить FTP-серверы на (одну из) ваших машин?

Если можете, вам просто нужно будет использовать FTP-клиент (например, FileZilla, у которого есть индикатор выполнения) .

0
ответ дан 3 December 2019 в 06:22
поделиться

Woof - отличный скрипт Python, который может вам подойти:

http://www.home.unix-ag.org/simon/woof.html

7
ответ дан 3 December 2019 в 06:22
поделиться

Для более эффективной передачи по сети. Взгляните на эту статью , в которой объясняется эффективная передача данных с помощью нулевого копирования

0
ответ дан 3 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: