Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> передача файла, SocketChannel 
:(
    Опции темы
#Maestro#
Дата 3.6.2009, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 3.7.2008

Репутация: нет
Всего: нет



господа, можно передать файл (File f) таким обaрзом?

Код

SocketChannel channel = SocketChannel.open(new InetSocketAddress("192.168.0.2", 23));

OutputStream out = Channels.newOutputStream(channel);

а вот дальше не понимаю - как реализовать передачу объекта типа File?


Это сообщение отредактировал(а) #Maestro# - 3.6.2009, 10:24
PM MAIL   Вверх
Girin
Дата 9.6.2009, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 6.2.2008

Репутация: нет
Всего: нет



Примерно как то так:

Код

File file = new File("filename");
Long len=file.length();
FileChannel wChannel = new FileOutputStream(file, false).getChannel();
ByteBuffer bbuf = ByteBuffer.allocate(len.intValue());
//читаем из файла
wChannel.read(bbuf);
 //пишем в сокет
channel.write(bbuf);
// закрываем файл
wChannel.close();

Возможно есть и более элегатное решение
PM   Вверх
#Maestro#
Дата 16.6.2009, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 3.7.2008

Репутация: нет
Всего: нет



спосибо! но вы проверяли этот код? интересно - такой код станет адекватно работать?
Код

File file = new File("C:\\workbook.xml").getAbsoluteFile();
Long len=file.length();
FileChannel wChannel = new FileOutputStream("C:\\workbook.xml").getChannel();
ByteBuffer bbuf = ByteBuffer.allocate(len.intValue());

а в строке 
Код

wChannel.read(bbuf); 

срабатывает исключение 
Код

java.nio.channels.NonReadableChannelException
        at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:137)

почему?


и не подскажете - какой в этом случае должен быть код на серверном приложении? кроме:
Код

ServerSocket s = new ServerSocket(23);      //23-й порт уже чем-то используется, поэтому я изменил 
                                                                                                                                                //23 нa  8823
Socket incoming = s.accept;

            try
            {
            BufferedReader in = new BufferedReader(new InputStreamReader(incoming.getInputStream()));

......?????.......

 in.close();
 }
    catch(IOException e) {e.printStackTrace();}




Это сообщение отредактировал(а) #Maestro# - 16.6.2009, 15:04
PM MAIL   Вверх
Girin
Дата 16.6.2009, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 6.2.2008

Репутация: нет
Всего: нет




Цитата(#Maestro# @  16.6.2009,  11:06 Найти цитируемый пост)
срабатывает исключение 
код Java
1:
2:
java.nio.channels.NonReadableChannelException
        at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:137)

почему?


Я не проверял, код посему извиняюсь. Нужно использовать FileInputStream для чтения
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.