Передача файлов NIO2

157
13 апреля 2018, 17:56

Добрый день есть код

SocketAddress socketAddress = new InetSocketAddress(HOST, PORT);
SocketChannel socketChannel = SocketChannel.open();
socketChannel.connect(socketAddress);
FileChannel fileChannel = new RandomAccessFile(file, "r").getChannel();
fileChannel.transferTo(0, fileChannel.size(), socketChannel);

как я понимаю он для передачи файла. Нужен соотвецтвующий код со стороны получателя. Еще хотел спросить можно таким способом передавать видео, картинки, архивы. Если нет то дайте пожалуйста ссылку на ресурс где об этом можно прочесть.

Answer 1

Сервер принимающий файл:

public class NioServer {
    private static final int PORT = 1234;
    private static final String FILE_NAME = "image.jpg";
    public static void main(String args[]) throws IOException {
        try (ServerSocketChannel serverSocketChannel = ServerSocketChannel.open()) {
            serverSocketChannel.bind(new InetSocketAddress(PORT));
            try (SocketChannel socketChannel = serverSocketChannel.accept()) {
                try (FileChannel fileChannel = FileChannel.open(Paths.get(FILE_NAME), StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {
                    fileChannel.transferFrom(socketChannel, 0, Long.MAX_VALUE);
                }
            }
        }
    }
}

Клиент передающий файл:

public class NioClient {
    private static final int PORT = 1234;
    private static final String HOST = "localhost";
    private static final String FILE_NAME = "image.jpg";
    public static void main(String args[]) throws IOException {
        InetSocketAddress serverAddress = new InetSocketAddress(HOST, PORT);
        try (SocketChannel socketChannel = SocketChannel.open(serverAddress)) {
            try (FileChannel fileChannel = FileChannel.open(Paths.get(FILE_NAME))) {
                fileChannel.transferTo(0, fileChannel.size(), socketChannel);
            }
        }
    }
}

Таким способом можно передавать видео, картинки и архивы.

READ ALSO
Заполнение таблицы через SQL запрос[JAVA]

Заполнение таблицы через SQL запрос[JAVA]

Привет, подключаюсь до БД вывожу данные через rsnext(), все ок

182
Команда oracle из явы

Команда oracle из явы

Как можно выполнить команду oracle Grant из явы

175
Создание элементов в xml на java

Создание элементов в xml на java

Всем доброго времени суток :) В общем вот такой вопрос: создал класс с методом сохранения данных, которые лежат в HashMap, в XML файлМапа точно не пустая,...

174
Взял первый заказ на UpWORK - как спасти себя? [требует правки]

Взял первый заказ на UpWORK - как спасти себя? [требует правки]

Позавчера взял первый заказ на UpWORK - через 2 года после регистрации профиляРаньше то не получалось, то руки не доходили

315