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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с IO-потоками 
:(
    Опции темы
nerezus
Дата 30.1.2007, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



Создаем сокет.
Создаем 2 потока: ввод и вывод.

Далее мы можем писать в один и считывать из другого.
В случае HTTP, к примеру, мы пишем в out и принимаем из in до тех пор, пока он не закроется.

А если он не должен закрываться? Т.е. протокол не http, к примеру.
А данные приходят не сразу все, а по кускам )
Придется при приеме анализировать данные(принимая по байту) и определять, сколько можно еще принять, прежде чем обработать и писать ответ?
А если данные в формате XML, то придется ждать конца тега? Т.е. при приеме данных еще и парсить придется?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Alexandr87
Дата 31.1.2007, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



и ?
Если это был вопрос, то - да, придется.

Это сообщение отредактировал(а) Alexandr87 - 31.1.2007, 07:56
PM Jabber   Вверх
nerezus
Дата 31.1.2007, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



Alexandr87, тогда вопрос 2:

Где найти библиотеку для работы с XML через сеть? Т.к. не верю, что это до меня не приходилось делать.
Может кто-то уже сталкивался?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Alexandr87
Дата 31.1.2007, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



ПО-моему стандартные парсеры - работают с потоками (InputStream или другими), и соответственно, наверняка, можно скормить им напрямую потоки полученные с помощью Socket.getInputStream()

Добавлено @ 11:17 
ЗЫ, кстати есть статья в факуале
http://vingrad.ru/JAVA-JAV-003029
PM Jabber   Вверх
nerezus
Дата 31.1.2007, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



Цитата

и соответственно, наверняка, можно скормить им напрямую потоки полученные с помощью Socket.getInputStream()
 Эмм.. поток немного... бесконечный )
Приходит в него по тегу. И на некоторые моменты времени может быть такое, что он оборван... типа <mytag val="bla
Сможет ли с этим работать парсер?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Alexandr87
Дата 31.1.2007, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



Думаю да, попробуй.
PM Jabber   Вверх
LSD
Дата 31.1.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(nerezus @  31.1.2007,  11:26 Найти цитируемый пост)
Сможет ли с этим работать парсер?

Да. Поток чтения будет заблокирован, и парсер соответсвенно тоже.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
nerezus
Дата 31.1.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



LSD, хм... т.е. этот парсер я должен буду пустить в отдельный поток, чтобы иметь возможность писать в out по мере приходы мне данных?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
LSD
Дата 31.1.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Нет, у тебя будет один поток, он читает данные из сокета, парсит их, и как распарсит выдает в out.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
nerezus
Дата 31.1.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



Цитата

Нет, у тебя будет один поток, он читает данные из сокета, парсит их, и как распарсит выдает в out. 
 Эм...
Не все так просто....

Т.е. он не прекратит читать данные из сокета, пока сокет не закроется? Или он передает мне управление, когда он прочитает 1 тег? Но мне по мере того, как он читает, надо будет отправлять ему данные.
Причем не как ответ на пришедшие, а в произвольный промежуток времени.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
LSD
Дата 31.1.2007, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Если ты будешь делать так как описано в FAQ, то ты создаешь свой обработчик SAX, затем запускаешь SAX парсер парсить данные из потока. После того как SAX парсер найдет структурный элемент, он вызывает твой обработчик, после того как обработчик отработает он продолжает парсинг.
Все это происходит в одном потоке.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
nerezus
Дата 31.1.2007, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



Угу, спасибо, понял: парсер(получая данные из in) прерывается только чтобы передать параметр в обработчик.
Значит, чтобы отправлять данные в out, мне нужно заводить отдельный поток.


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

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

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


 




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


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

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