Отправка и получение файлов
Отправка и получение файла в основном разбиты на две простые части кода.
Получение кода:
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 имеют хороший пример этого на уроке по параллелизму .
Хотя это довольно сложный вопрос сам по себе. Я бы порекомендовал задать это в своем собственном вопросе, если вам нужна дополнительная помощь.